Dieses Projekt zielt darauf ab, eine Empfehlungsmotor zu erstellen, die eine Architektur (Agenten Abruf-Abruf-Augmented Generation) nutzt, um kontextbezogene Empfehlungen auf der Grundlage von Benutzeranfragen zu geben. Das MVP konzentriert sich auf Modularität und Skalierbarkeit und nutzt Open-Source-Technologien zur Kosteneffizienz.
Vorgeschlagene Codebasis -Struktur:
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
ARRAVEAL-AUGMENTED-Generation (RAG) ist der Prozess der Optimierung der Ausgabe eines großen Sprachmodells und verweist daher auf eine maßgebliche Wissensbasis außerhalb seiner Trainingsdatenquellen, bevor eine Antwort generiert wird. Großsprachige Modelle (LLMs) werden auf riesigen Datenmengen geschult und verwenden Milliarden von Parametern, um die Originalausgabe für Aufgaben wie Beantwortung von Fragen, Übersetzungssprachen und Ausfüllen von Sätzen zu generieren. RAG verlängert die bereits leistungsstarken Funktionen von LLMs auf bestimmte Bereiche oder die interne Wissensbasis eines Unternehmens, ohne dass das Modell überholt werden muss. Es ist ein kostengünstiger Ansatz zur Verbesserung der LLM-Leistung, so dass es in verschiedenen Kontexten relevant, genau und nützlich bleibt.
LLMs sind eine wichtige Technologie für künstliche Intelligenz (KI), die intelligente Chatbots und andere natürliche Sprachverarbeitung (NLP) -Anwendungen betreibt. Ziel ist es, Bots zu erstellen, mit denen Benutzerfragen in verschiedenen Kontexten durch Kreuzbeanspruchung maßgebliche Wissensquellen beantworten können. Leider führt die Art der LLM -Technologie in LLM -Antworten unvorhersehbar. Darüber hinaus sind LLM-Trainingsdaten statisch und stellt ein Grenzdatum für das Wissen ein.
Präsentieren Sie falsche Informationen, wenn es nicht die Antwort gibt. Präsentieren Sie veraltete oder generische Informationen, wenn der Benutzer eine bestimmte, aktuelle Antwort erwartet. Erstellen einer Antwort aus nicht autoritativen Quellen. Schaffung ungenauer Reaktionen aufgrund von Terminologieverwirrung, wobei verschiedene Schulungsquellen dieselbe Terminologie verwenden, um über verschiedene Dinge zu sprechen. Sie können sich das große Sprachmodell als einen überbegeisterten neuen Mitarbeiter vorstellen, der sich weigert, über aktuelle Ereignisse auf dem Laufenden zu bleiben, aber immer jede Frage mit absolutem Vertrauen beantworten wird. Leider kann eine solche Haltung das Vertrauen des Benutzer negativ beeinflussen und möchten nicht, dass Ihre Chatbots nachahmen!
Lag ist ein Ansatz zur Lösung einiger dieser Herausforderungen. Es leitet das LLM um, um relevante Informationen aus maßgeblichen, festgelegten Wissensquellen abzurufen. Unternehmen haben eine höhere Kontrolle über die generierte Textausgabe, und Benutzer erhalten Einblicke in die Generierung des LLM.
Die Lagentechnologie bringt den generativen KI -Bemühungen eines Unternehmens mehrere Vorteile.
Die Chatbot -Entwicklung beginnt in der Regel mit einem Fundamentmodell. Fundamentmodelle (FMS) sind api-zugängliche LLMs, die in einem breiten Spektrum verallgemeinerter und nicht markierter Daten geschult sind. Die rechnerischen und finanziellen Kosten für die Umschulung von FMS für Organisationen oder domänenspezifische Informationen sind hoch. Rag ist ein kostengünstigerer Ansatz zur Einführung neuer Daten in die LLM. Es macht generative Technologie für künstliche Intelligenz (generative KI) breiter und nutzbarer.
Selbst wenn die ursprünglichen Trainingsdatenquellen für ein LLM für Ihre Bedürfnisse geeignet sind, ist es schwierig, die Relevanz aufrechtzuerhalten. RAG ermöglicht es Entwicklern, den generativen Modellen die neuesten Forschungen, Statistiken oder Nachrichten bereitzustellen. Sie können RAG verwenden, um das LLM direkt an Live-Social-Media-Feeds, Nachrichtenseiten oder andere häufig aufgerichtete Informationsquellen zu verbinden. Das LLM kann dann den Benutzern die neuesten Informationen zur Verfügung stellen.
RAG ermöglicht es dem LLM, genaue Informationen mit Quellenzuordnung zu präsentieren. Die Ausgabe kann Zitate oder Verweise auf Quellen enthalten. Benutzer können auch Quelldokumente selbst nachsehen, wenn sie weitere Klarstellung oder weitere Details erfordern. Dies kann das Vertrauen und das Vertrauen in Ihre generative KI -Lösung erhöhen.
Mit RAG können Entwickler ihre Chat -Anwendungen effizienter testen und verbessern. Sie können die Informationsquellen der LLM kontrollieren und ändern, um sich an die Änderung der Anforderungen oder die funktionsübergreifende Verwendung anzupassen. Entwickler können auch das Abrufen des sensiblen Informationen auf unterschiedliche Autorisierungsstufen einschränken und sicherstellen, dass das LLM geeignete Antworten erzeugt. Darüber hinaus können sie auch Behebung beheben und Korrekturen vornehmen, wenn die LLM auf falsche Informationsquellen auf bestimmte Fragen verweist. Unternehmen können generative KI -Technologie für ein breiteres Angebot an Anwendungen sicherer umsetzen.
Ohne Rag nimmt die LLM die Benutzereingabe an und erstellt eine Antwort, die auf Informationen basiert, auf die sie trainiert wurde - oder das, was sie bereits weiß. Mit RAG wird eine Informationsabrufkomponente eingeführt, in der die Benutzereingabe verwendet wird, um Informationen zuerst von einer neuen Datenquelle zu ziehen. Die Benutzerabfrage und die relevanten Informationen werden beide der LLM übergeben. Das LLM nutzt das neue Wissen und seine Schulungsdaten, um bessere Antworten zu erzielen. Die folgenden Abschnitte geben einen Überblick über den Prozess.
Die neuen Daten außerhalb des ursprünglichen Trainingsdatensatzes des LLM werden als externe Daten bezeichnet. Es kann aus mehreren Datenquellen wie APIs, Datenbanken oder Dokumentrepositories stammen. Die Daten können in verschiedenen Formaten wie Dateien, Datenbankdatensätzen oder Langformtext vorhanden sein. Eine andere KI -Technik, die als Einbettungssprachmodelle bezeichnet wird, wandelt Daten in numerische Darstellungen um und speichert sie in einer Vektor -Datenbank. Dieser Prozess erstellt eine Wissensbibliothek, die die generativen KI -Modelle verstehen können.
Der nächste Schritt besteht darin, eine Relevanzsuche durchzuführen. Die Benutzerabfrage wird in eine Vektordarstellung konvertiert und mit den Vektor -Datenbanken übereinstimmt. Betrachten Sie beispielsweise einen intelligenten Chatbot, der Humanressourcenfragen für eine Organisation beantworten kann. Wenn ein Mitarbeiter sucht: "Wie viel Jahresurlaub habe ich?" Das System wird zusammen mit den früheren Urlaubsaufzeichnungen des einzelnen Mitarbeiters Jahresurlaubsdokumente abrufen. Diese spezifischen Dokumente werden zurückgegeben, da sie für das, was der Mitarbeiter hat, sehr relevant sind. Die Relevanz wurde unter Verwendung mathematischer Vektorberechnungen und Darstellungen berechnet und festgelegt.
Anschließend erweitert das LAG -Modell die Benutzereingabe (oder fordert), indem die relevanten abgerufenen Daten im Kontext hinzugefügt werden. In diesem Schritt werden schnelle technische Techniken verwendet, um effektiv mit dem LLM zu kommunizieren. Mit der erweiterten Eingabeaufforderung können die großen Sprachmodelle eine genaue Antwort auf Benutzeranfragen generieren.
Die nächste Frage kann sein - was, wenn die externen Daten abgestanden werden? Um aktuelle Informationen zum Abrufen zu erhalten, aktualisieren Sie die Dokumente asynchron und aktualisieren Sie die Einbettung der Dokumente. Sie können dies durch automatisierte Echtzeitprozesse oder periodische Chargenverarbeitung tun. Dies ist eine häufige Herausforderung in der Datenanalyse-differenzierende Datenwissenschaftsansätze für das Änderungsmanagement können verwendet werden.
Die semantische Suche verbessert die Lappenergebnisse für Unternehmen, die ihren LLM -Anwendungen enorme externe Wissensquellen hinzufügen möchten. Moderne Unternehmen speichern große Mengen an Informationen wie Handbüchern, FAQs, Forschungsberichten, Kundendienstleitfäden und Repositorys für Personalressourcen in verschiedenen Systemen. Die Kontextabnahme ist im Maßstab herausfordernd und senkt folglich die generative Produktionsqualität.
Semantische Suchtechnologien können große Datenbanken mit unterschiedlichen Informationen scannen und Daten genauer abrufen. Zum Beispiel können sie Fragen beantworten wie: "Wie viel wurde im letzten Jahr für Maschinenreparaturen ausgegeben?" Durch die Zuordnung der Frage an die entsprechenden Dokumente und die Rückgabe spezifischer Text anstelle von Suchergebnissen können Entwickler diese Antwort verwenden, um mehr Kontext für die LLM zu liefern.
Konventionelle oder Schlüsselwort-Suchlösungen in Lappen ergeben begrenzte Ergebnisse für wissensintensive Aufgaben. Entwickler müssen sich auch mit Worteinbettungen, Dokumentieren und anderen Komplexitäten befassen, wenn sie ihre Daten manuell erstellen. Im Gegensatz dazu führen semantische Suchtechnologien die gesamte Arbeit der Wissensbasisvorbereitung durch, sodass Entwickler dies nicht tun müssen. Sie erzeugen auch semantisch relevante Passagen und Token -Wörter, die von Relevanz bestellt wurden, um die Qualität der Lag -Nutzlast zu maximieren.