Ce projet vise à construire un moteur de recommandation en tirant parti d'une architecture de génération (RAG) de récupération agentique pour fournir des recommandations contextuelles basées sur les requêtes utilisateur. Le MVP se concentre sur la modularité et l'évolutivité tout en utilisant des technologies open source pour la rentabilité.
Structure de base de code proposée:
ragsearch/
├── __init__.py
├── retrieval/
│ ├── __init__.py
│ ├── structured.py # For databases (e.g., DuckDB,sqlLite,MongoDB)
│ ├── unstructured.py # For document loaders (e.g., PDF, Word, HTML)
│ ├── base.py # Abstract base class
├── generation/
│ ├── __init__.py
│ ├── langchain.py # LangChain-based generation
│ ├── llamaindex.py # LlamaIndex-based generation
│ ├── base.py # Abstract base class
├── fusion/
│ ├── __init__.py
│ ├── simple_fusion.py # Simple query-context fusion
│ ├── attention.py # Advanced fusion strategies
│ ├── base.py # Abstract base class
├── reranking/
│ ├── __init__.py # Factory for reranking components
│ ├── bm25_reranker.py # Reranking based on BM25 scores
│ ├── neural_reranker.py # Reranking with neural models
│ ├── base.py # Abstract base class
├── llms/
│ ├── __init__.py # Factory for LLMs
│ ├── openai.py # OpenAI wrapper
│ ├── cohere.py # Cohere wrapper
│ ├── huggingface.py # HuggingFace wrapper
│ ├── base.py # Abstract base class
├── utils/
│ ├── __init__.py
│ ├── logger.py # Logging utilities
│ ├── config.py # Configuration utilities
│ ├── data.py # Data utilities
│ ├── metrics.py # Evaluation metrics
├── tests/
│ ├── __init__.py
│ ├── test_retrieval.py
│ ├── test_generation.py
│ ├── test_fusion.py
│ ├── test_reranking.py
│ ├── test_llms.py
├── main.py # Main entry point
├── config.yaml # Configuration file
├── README.md # Project documentation
├── RAG.md # Documentation for Retrieval-Augmented Generation
├── RAG-FAQ.md # FAQ for Retrieval-Augmented Generation
La génération (RAG) (RAG) de la récupération est le processus d'optimisation de la sortie d'un modèle de langue large, il fait donc référence à une base de connaissances faisant autorité en dehors de ses sources de données de formation avant de générer une réponse. Les modèles de grande langue (LLMS) sont formés sur de vastes volumes de données et utilisent des milliards de paramètres pour générer une sortie originale pour des tâches telles que répondre aux questions, traduire les langues et compléter les phrases. RAG étend les capacités déjà puissantes des LLM à des domaines spécifiques ou la base de connaissances internes d'une organisation, le tout sans avoir à recycler le modèle. Il s'agit d'une approche rentable pour améliorer la sortie LLM, il reste donc pertinent, précis et utile dans divers contextes.
Les LLM sont une technologie clé de l'intelligence artificielle (AI) alimentant les chatbots intelligents et d'autres applications de traitement du langage naturel (NLP). L'objectif est de créer des robots qui peuvent répondre aux questions des utilisateurs dans divers contextes en croix de sources de connaissances faisant autorité. Malheureusement, la nature de la technologie LLM introduit l'imprévisibilité dans les réponses LLM. De plus, les données de formation LLM sont statiques et introduisent une date de coupure sur les connaissances dont il dispose.
Présentation de fausses informations lorsqu'elle n'a pas la réponse. Présentation d'informations obsolètes ou génériques lorsque l'utilisateur attend une réponse spécifique et actuelle. Création d'une réponse à partir de sources non autoritaires. Création de réponses inexactes dues à une confusion de terminologie, dans laquelle différentes sources de formation utilisent la même terminologie pour parler de différentes choses. Vous pouvez considérer le modèle de grande langue comme un nouvel employé trop enthousiaste qui refuse de rester informé des événements actuels, mais répondra toujours à chaque question avec une confiance absolue. Malheureusement, une telle attitude peut avoir un impact négatif sur la confiance des utilisateurs et n'est pas quelque chose que vous voulez que vos chatbots imitent!
Le chiffon est une approche pour résoudre certains de ces défis. Il redirige le LLM pour récupérer les informations pertinentes à partir de sources de connaissances faisant autorité et prédéterminées. Les organisations ont un plus grand contrôle sur la sortie de texte générée et les utilisateurs acquièrent des informations sur la façon dont le LLM génère la réponse.
La technologie RAG apporte plusieurs avantages aux efforts génératifs d'une organisation d'IA.
Le développement du chatbot commence généralement à l'aide d'un modèle de fondation. Les modèles de fondation (FMS) sont des LLM accessibles à l'API formées sur un large éventail de données généralisées et non marquées. Les coûts de calcul et financiers du recyclage du FMS pour l'organisation ou les informations spécifiques au domaine sont élevés. Le chiffon est une approche plus rentable pour introduire de nouvelles données au LLM. Il rend la technologie générative de l'intelligence artificielle (AI générative) plus largement accessible et utilisable.
Même si les sources de données de formation originales pour un LLM conviennent à vos besoins, il est difficile de maintenir la pertinence. RAG permet aux développeurs de fournir les dernières recherches, statistiques ou nouvelles aux modèles génératifs. Ils peuvent utiliser RAG pour connecter le LLM directement aux flux de médias sociaux en direct, à des sites d'information ou à d'autres sources d'informations fréquemment mise à jour. Le LLM peut ensuite fournir les dernières informations aux utilisateurs.
RAG permet au LLM de présenter des informations précises avec l'attribution de la source. La sortie peut inclure des citations ou des références à des sources. Les utilisateurs peuvent également rechercher eux-mêmes des documents source s'ils nécessitent des éclaircissements ou plus de détails. Cela peut accroître la confiance et la confiance dans votre solution d'IA générative.
Avec RAG, les développeurs peuvent tester et améliorer leurs applications de chat plus efficacement. Ils peuvent contrôler et modifier les sources d'informations de la LLM pour s'adapter aux exigences changeantes ou à une utilisation interfonctionnelle. Les développeurs peuvent également restreindre la récupération des informations sensibles à différents niveaux d'autorisation et s'assurer que le LLM génère des réponses appropriées. De plus, ils peuvent également dépanner et faire des correctifs si le LLM fait référence à des sources d'informations incorrectes pour des questions spécifiques. Les organisations peuvent mettre en œuvre la technologie d'IA générative plus en toute confiance pour un éventail plus large d'applications.
Sans chiffon, le LLM prend l'entrée de l'utilisateur et crée une réponse basée sur les informations sur lesquelles elle a été formée - ou ce qu'elle sait déjà. Avec RAG, un composant de récupération d'informations est introduit qui utilise l'entrée de l'utilisateur pour d'abord extraire les informations d'une nouvelle source de données. La requête utilisateur et les informations pertinentes sont toutes deux données au LLM. Le LLM utilise les nouvelles connaissances et ses données de formation pour créer de meilleures réponses. Les sections suivantes donnent un aperçu du processus.
Les nouvelles données en dehors de l'ensemble de données de formation d'origine du LLM sont appelées données externes. Il peut provenir de plusieurs sources de données, telles que des API, des bases de données ou des référentiels de documents. Les données peuvent exister dans divers formats comme les fichiers, les enregistrements de base de données ou le texte long. Une autre technique d'IA, appelée modèles de langage d'intégration, convertit les données en représentations numériques et les stocke dans une base de données vectorielle. Ce processus crée une bibliothèque de connaissances que les modèles d'IA génératifs peuvent comprendre.
L'étape suivante consiste à effectuer une recherche de pertinence. La requête utilisateur est convertie en représentation vectorielle et appariée avec les bases de données vectorielles. Par exemple, considérons un chatbot intelligent qui peut répondre aux questions des ressources humaines pour une organisation. Si un employé recherche, "Combien de congé annuel ai-je?" Le système récupérera les documents de politique de congé annuelle aux côtés du record de congé de l'employé individuel. Ces documents spécifiques seront retournés car ils sont très pertinents à ce que l'employé a des commentaires. La pertinence a été calculée et établie en utilisant des calculs et des représentations vectoriels mathématiques.
Ensuite, le modèle RAG augmente l'entrée (ou les invites) de l'utilisateur en ajoutant les données récupérées pertinentes en contexte. Cette étape utilise des techniques d'ingénierie rapides pour communiquer efficacement avec le LLM. L'invite augmentée permet aux grands modèles de langue de générer une réponse précise aux requêtes utilisateur.
La question suivante peut être - que si les données externes deviennent vives? Pour maintenir les informations actuelles pour la récupération, mettez à jour de manière asynchrone les documents et mettez à jour la représentation d'intégration des documents. Vous pouvez le faire grâce à des processus automatisés en temps réel ou à un traitement par lots périodique. Il s'agit d'un défi commun dans l'analyse des données - des approches différentes-sciences des données pour la gestion du changement peuvent être utilisées.
La recherche sémantique améliore les résultats des RAG pour les organisations souhaitant ajouter de vastes sources de connaissances externes à leurs applications LLM. Les entreprises modernes stockent de grandes quantités d'informations telles que les manuels, les FAQ, les rapports de recherche, les guides de service à la clientèle et les référentiels de documents de ressources humaines sur divers systèmes. La récupération de contexte est difficile à grande échelle et réduit par conséquent la qualité de sortie générative.
Les technologies de recherche sémantique peuvent scanner de grandes bases de données d'informations disparates et récupérer plus précisément les données. Par exemple, ils peuvent répondre à des questions telles que «combien a été consacrée à des réparations de machines l'année dernière?» En mappant la question aux documents pertinents et en renvoyant un texte spécifique au lieu des résultats de recherche.
Les solutions de recherche de mots clés ou de mots clés produisent des résultats limités pour les tâches à forte intensité de connaissances. Les développeurs doivent également faire face aux intérêts des mots, à des documents de document et à d'autres complexités lorsqu'ils préparent manuellement leurs données. En revanche, les technologies de recherche sémantique font tout le travail de la préparation de la base de connaissances afin que les développeurs n'aient pas à le faire. Ils génèrent également des passages sémantiquement pertinents et des mots de jeton ordonnés par pertinence pour maximiser la qualité de la charge utile de chiffon.