dsRAG : un moteur de recherche pour les données non structurées et les requêtes complexes

Introduction générale

dsRAG est un moteur de recherche très performant conçu pour traiter des requêtes complexes sur des données non structurées. Il est particulièrement performant pour traiter des requêtes difficiles dans des textes denses tels que des rapports financiers, des documents juridiques et des articles universitaires. Il est particulièrement performant dans le traitement de requêtes difficiles dans des textes denses tels que des rapports financiers, des documents juridiques et des articles universitaires. dsRAG utilise trois approches clés pour améliorer les performances : la segmentation sémantique, l'autogénération contextuelle et l'extraction de segments pertinents. Ces approches permettent à dsRAG d'atteindre une précision significativement plus élevée que la base traditionnelle de RAG dans des tâches complexes de quiz à livre ouvert. En outre, dsRAG prend en charge un large éventail d'options de configuration qui peuvent être personnalisées en fonction des besoins de l'utilisateur. Sa conception modulaire permet aux utilisateurs d'intégrer facilement différents composants, tels que des bases de données vectorielles, des modèles d'intégration et des réorganisateurs, afin d'obtenir des résultats optimaux en matière de recherche.

Par rapport aux lignes de base RAG (Retrieval-Augmented Generation) traditionnelles, dsRAG atteint des taux de précision significativement plus élevés dans les tâches complexes de quiz à livre ouvert. Par exemple, dans le test de référence FinanceBench, dsRAG atteint une précision de 96,61 TP3T, contre 321 TP3T pour la ligne de base RAG traditionnelle. dsRAG améliore considérablement les performances de recherche grâce à des méthodes clés telles que la segmentation sémantique, le contexte automatique et l'extraction de segments pertinents.

dsRAG:用于处理非结构化数据和复杂查询的检索引擎

 

Liste des fonctions

  • segmentation sémantiqueLes documents de référence : Utiliser la méthode LLM pour segmenter les documents afin d'améliorer la précision de l'extraction.
  • Génération automatique de contexteLes en-têtes de bloc : Générer des en-têtes de bloc contenant un contexte au niveau du document et du paragraphe pour améliorer la qualité de l'incorporation.
  • Extraction des segments pertinentsLes paragraphes : Combiner intelligemment des blocs de texte apparentés au moment de l'interrogation pour générer des paragraphes plus longs.
  • Prise en charge de bases de données vectorielles multiples: par exemple BasicVectorDB, WeaviateVectorDB, ChromaDB, etc.
  • Prise en charge de plusieurs modèles intégrés: par exemple, OpenAIEmbedding, CohereEmbedding, etc.
  • Prise en charge de plusieurs réorganisateurs: par exemple, CohereReranker, VoyageReranker, etc.
  • Base de connaissances permanenteLes bases de connaissances : support pour la persistance des objets de la base de connaissances sur le disque en vue d'un chargement et d'une interrogation ultérieurs.
  • Prise en charge de plusieurs formats de documentsPrise en charge des formats PDF, Markdown et autres formats de documents, tels que l'analyse syntaxique et le traitement.

 

Utiliser l'aide

montage

Pour installer le paquetage Python pour dsRAG, vous pouvez exécuter la commande suivante :

pip install dsrag

Assurez-vous d'avoir les clés API pour OpenAI et Cohere et définissez-les comme variables d'environnement.

Démarrage rapide

Vous pouvez utiliser lecreate_kb_from_filecrée une nouvelle base de connaissances directement à partir d'un fichier :

from dsrag.create_kb import create_kb_from_file
file_path = "dsRAG/tests/data/levels_of_agi.pdf"
kb_id = "levels_of_agi"
kb = create_kb_from_file(kb_id, file_path)

Les objets de la base de connaissances sont automatiquement conservés sur le disque, de sorte qu'il n'est pas nécessaire de les sauvegarder explicitement.

Désormais, vous pouvez avoir une meilleure idée de ce qui se passe avec sonkb_idCharger la base de connaissances et utiliser la fonctionqueryLes méthodes sont interrogées :

from dsrag.knowledge_base import KnowledgeBase
kb = KnowledgeBase("levels_of_agi")
search_queries = ["What are the levels of AGI?", "What is the highest level of AGI?"]
results = kb.query(search_queries)
for segment in results:
print(segment)

Personnalisation de base

Vous pouvez personnaliser la configuration de la base de connaissances, par exemple en utilisant uniquement OpenAI :

from dsrag.llm import OpenAIChatAPI
from dsrag.reranker import NoReranker
llm = OpenAIChatAPI(model='gpt-4o-mini')
reranker = NoReranker()
kb = KnowledgeBase(kb_id="levels_of_agi", reranker=reranker, auto_context_model=llm)

Ensuite, utilisezadd_documentpour ajouter un document :

file_path = "dsRAG/tests/data/levels_of_agi.pdf"
kb.add_document(doc_id=file_path, file_path=file_path)

construire

L'objet base de connaissances accepte les documents (sous forme de texte brut) et effectue le découpage et l'intégration, ainsi que d'autres opérations de prétraitement. Lorsqu'une requête est saisie, le système effectue une recherche vectorielle dans la base de données, un réordonnancement et une extraction des segments pertinents, puis renvoie le résultat.

Les objets de la base de connaissances sont persistants par défaut et leur configuration complète est enregistrée dans un fichier JSON pour faciliter la reconstruction et la mise à jour.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...