Webinar-Zusammenfassung: Retrieval-Techniken für den Zugriff auf den relevantesten Kontext für LLM-Anwendungen
Die Verbindung großer Sprachmodelle (LLMs) mit externen Datenquellen ist entscheidend, um die Leistung vieler KI-Anwendungen zu verbessern. Diese Verbindungen umfassen die Verknüpfung mit bereits bestehenden Datensammlungen, das Abrufen von Benutzerkonversationen oder das Erzeugen „neuer Erinnerungen“ durch Reflexion. Retrieval ist das Extrahieren relevanter Informationen aus verbundenen externen Quellen und deren Einbindung in die Anfrage, um Kontext bereitzustellen.
In unserem kürzlich durchgeführten Webinar diskutierten Harrison Chase, Mitgründer und CEO von LangChain, und Filip Haltmayer, Software Engineer bei Zilliz, Retrieval mit LangChain und Vektordatenbanken, semantische Suche und deren Grenzfälle. In diesem Beitrag untersuchen wir die wichtigsten Erkenntnisse aus dem Webinar und beantworten einige der unbeantworteten Fragen des Publikums.
Was ist Retrieval und warum ist es wichtig?
Im Allgemeinen bezeichnet Retrieval den Zugriff auf Informationen aus dem Gedächtnis oder anderen Speichergeräten. Während des Webinars erklärte Harrison, wie wir Retrieval-Techniken nutzen können, um externes Wissen mithilfe einer Vektordatenbank wie Milvus und eines KI-Agenten wie LangChain zu LLMs zu bringen.
Obwohl LLMs sehr leistungsfähig sind, haben sie Einschränkungen, da sie nur die vortrainierten Informationen kennen, die möglicherweise aktualisiert werden müssen. Beispielsweise decken die Daten von ChatGPT nur bis zum Jahr 2021 ab, sodass sie nicht wissen, was danach passiert ist. LLMs fehlen außerdem Daten zu domänenspezifischen oder proprietären Informationen sowie Daten über Ihr Unternehmen und Ihr Projekt. Darüber hinaus kann es schwierig sein, Informationen zu erkennen, selbst wenn sie im LLM vorhanden sind. In solchen Fällen kann Retrieval eine hervorragende Ergänzung sein, um LLMs mehr Kontext für genauere Antworten zu geben oder die Zielinformationen, die bereits im LLM enthalten sind, in den Vordergrund zu rücken.
Überblick über semantische Suche
Retrieval durch semantische Suche ist einer der wichtigsten Anwendungsfälle. Während des kürzlich durchgeführten Webinars gab Harrison einen Überblick darüber, wie semantische Suche innerhalb einer typischen CVP-Architektur (ChatGPT+Vector store+Prompt as code) funktioniert.
Das folgende Diagramm erklärt, wie semantische Suche in einem CVP-Stack funktioniert. Wenn ein Benutzer eine allgemeine Frage stellt, die das LLM beantworten kann, antwortet das LLM direkt auf die Frage. Wenn die Frage jedoch domänenspezifisch ist, wird sie in Vektoren umgewandelt und an eine Vektordatenbank wie Milvus gesendet, die bereits relevante Dokumente enthält. Die Vektordatenbank zerlegt die vorab gespeicherten Datensätze in Chunks und Embeddings, führt semantische Suchen durch, um die top-k relevantesten Ergebnisse für die Anfrage des Benutzers zu finden, und sendet diese Ergebnisse dann zusammen mit der Anfrage des Benutzers an einen KI-Agenten wie LangChain. LangChain kombiniert die Ergebnisse mit der Frage des Benutzers und sendet sie an das LLM. Das LLM liefert dann eine zufriedenstellende Antwort.
Wie semantische Suche in einem typischen CVP-Stack funktioniert
Grenzfälle der semantischen Suche
Semantische Suche wird schon seit einiger Zeit eingesetzt und hat sich als hilfreich bei der Bewältigung vieler Herausforderungen erwiesen. Harrison demonstrierte während des Webinars fünf Grenzfälle der semantischen Suche und analysierte jeden Fall gründlich.
Wiederholte Informationen
Beim Umgang mit zahlreichen ähnlichen oder kopierten Dokumenten kann das Abrufen relevanter Informationen eine Herausforderung sein. Diese Art von Inhalt ist für LLMs nicht geeignet und kann unnötigen Kontext erzeugen. Harrison schlug drei Lösungen vor, um dieses Problem zu überwinden:
Filtern Sie ähnliche Dokumente durch semantische Suchen heraus, bevor Sie sie an das LLM senden. Bevor LangChain beispielsweise die Prompts an ChatGPT sendet, ruft es 20–30 Dokumente ab und eliminiert ähnliche durch Embeddings oder umgeht sie zum LLM.
Nutzen Sie Max Marginal Relevance, um Vielfalt zu optimieren. Diese Suche konzentriert sich auf Ähnlichkeit und Vielfalt gegenüber anderen abgerufenen Vektoren.
Deduplizieren Sie Dokumente, bevor Sie sie in der Vektordatenbank speichern. Dieser Ansatz kann jedoch herausfordernd sein, da die Bestimmung des Ähnlichkeitswerts, der einem Duplikat entspricht, viel Arbeit erfordert. Ein Vektorelement könnte sehr unterschiedlich sein, was zu erheblichen Unterschieden führt.
Widersprüchliche Informationen
Widersprüchliche Informationen treten auf, wenn mehrere Quellen unterschiedliche Antworten auf eine Frage liefern, was sehr verwirrend sein kann, wenn Sie alle Daten einem LLM präsentieren. Wenn Sie sich beispielsweise nach der Urlaubsregelung Ihres Unternehmens erkundigen, erhalten Sie möglicherweise unterschiedliche Antworten aus Quellen wie dem HR-Dokument und irgendwelchen zufälligen Besprechungsnotizen.
Harrison schlug zwei Lösungen für dieses Problem vor:
Priorisieren Sie Quellen und integrieren Sie diese Rangfolge in den Abruf.
Übergeben Sie die Quelleninformationen an den Generierungsschritt, damit das LLM entscheiden kann, welche Quelle zuverlässiger ist.
Zeitlichkeit
Wenn sich Informationen im Laufe der Zeit ändern, nennt man das Zeitlichkeit. Beispielsweise kann sich die Urlaubsregelung Ihres Unternehmens gelegentlich ändern.
Um dieses Problem anzugehen, schlägt Harrison drei Lösungen vor:
Gewichtung nach Aktualität beim Abruf: veraltete Informationen vollständig herausfiltern.
Einbeziehung von Zeitstempeln bei der Generierung von Informationen: das LLM anweisen, sich auf aktuellere Informationen zu stützen.
Reflexion: das Verständnis eines Themas im Laufe der Zeit überarbeiten.
Metadatenabfrage
Manchmal stellen Benutzer Fragen, bei denen es mehr um Metadaten als um Inhalte geht. Beispielsweise kann ein Benutzer nach Filmen mit Außerirdischen aus dem Jahr 1980 suchen. Während „Filme über Außerirdische“ semantisch gesucht werden kann, ist 1980 eher eine exakte Übereinstimmung.
Wie können wir dieses Problem also lösen? Harrison schlägt vor, vor der Durchführung eines semantischen Suchabrufs einen Metadatenfilter zu generieren. Dieser Ansatz beinhaltet die Aufteilung der Frage in zwei Teile: den Metadatenfilter (der eine exakte Übereinstimmung ist, wie „Jahr gleich 1980“) und die Abfrage (wie „Außerirdische oder so etwas“ in diesem Fall).
Aber wie wenden wir den Metadatenfilter an? Viele Vektorspeicher erlauben die direkte Einbeziehung von Metadatenfiltern in die Abfrage. Wenn das nicht möglich ist, ist es immer noch möglich, die Ergebnisse nach dem Abruf zu filtern.
Multi-Hop-Fragen
Manchmal stellen Benutzer mehrere Fragen auf einmal, was es der semantischen Suche erschwert, alle notwendigen Informationen aus der ursprünglichen Frage abzurufen.
Harrison schlug vor, dass wir KI-Agenten wie LangChain verwenden, um diese Herausforderung zu bewältigen. LangChain kann die Frage in mehrere Schritte zerlegen und das Sprachmodell als Reasoning-Engine verwenden, um die erforderlichen Informationen abzurufen. Dieser überzeugende Ansatz kann jedoch viele LLM-Aufrufe erzeugen, was zu höheren Kosten führt.
Filip empfahl die Integration von GPTCache mit LangChain, da GPTCache vom LLM generierte Fragen und Antworten speichern kann. Wenn Benutzer beim nächsten Mal ähnliche Abfragen stellen, führt GPTCache semantische Suchen durch und gibt Antworten, bevor das LLM abgefragt wird, wodurch Benutzer Geld bei LLM-Aufrufen sparen.
Fragen & Antworten
Wir erhielten während des Webinars viele Fragen von unserem Publikum und schätzten ihre Teilnahme. Harrison und Filip beantworteten einige der Fragen während der Fragen-und-Antworten-Sitzung, aber aus Zeitgründen blieben einige unbeantwortet. Unten haben wir eine Liste der Fragen und Antworten zusammengestellt.
F: Können Sie mehr über die Generierung von Prompts mithilfe externer Wissensquellen sprechen? Welche Beispiele oder Tricks haben Sie verwendet? Plant LangChain, Funktionen hinzuzufügen, die optimierte Prompts erstellen?
Der Schlüssel zum Prompting ist, klar zu sagen, was man will. Wenn du nicht alle deine Absichten und die relevanten Informationen klar ausdrückst, weiß das LLM nicht, was es tun soll, genauso wie ein Mensch nicht wüsste, was zu tun ist. Ja, wir werden einige Funktionen zur Prompt-Optimierung hinzufügen.
F: Wie siehst du die aktuelle Landschaft der Retrieval Augmented Generation? Es gibt viele Lösungen wie Langchain, Llama Index, Vectara und andere. Was ist die beste Lösung, um die Retrieval-Schritte fein abzustimmen, einschließlich Router Query Engines und anderer? Du hast erwähnt, dass Retrieval die Wichtigkeit von Dokumenten unterscheiden könnte, und ist das bereits über LangChain verfügbar?
Der gesamte Bereich befindet sich noch in einem frühen Stadium und entwickelt sich extrem schnell. Ich würde zwischen dem Retrieval-Schritt und dem Generierungsschritt unterscheiden. Beim Retrieval würde ich behaupten, dass LangChain die größte Flexibilität und Modularität für die Anpassung eines vektorbasierten Retrieval-Systems bietet. Vectara ist eine ausgezeichnete, vollständig verwaltete End-to-End-Lösung für Retrieval, die viele Details abstrahiert. LlamaIndex bietet einige interessantere Datenstrukturen wie Bäume zum Experimentieren. Unabhängig davon, welchen Retrieval-Schritt du wählst, verwenden alle LangChain während des Generierungsschritts — wir haben Integrationen mit allen dreien. Diese Differenzierung kannst du mit angepassten Prompts erreichen.
F: Wie erwartest du, dass sich die Anwendungsfälle für Retrieval und die damit verbundenen Trade-offs auswirken werden, wenn die Kontextlimits von LLMs im Laufe der Zeit steigen?
Warum ist es immer noch notwendig, eine Vektordatenbank für Extended-Context-Transformers wie Anthropics LLM mit 100k Kontextlänge zu haben? Nun, Vektordatenbanken bieten eine wesentlich kosteneffizientere Lösung. Wenn es um diese LLMs geht, erledigen sie die gesamte rechenintensive Arbeit, während die Vektordatenbank sich um die Speicherung kümmert. Bitte beachte, dass sich Rechenkosten schnell summieren können. Wenn du also mehr Kontext in deine LLMs packen willst, musst du mit diesen höheren Kosten umgehen. Genau hier kommt der Vorteil einer Vektordatenbank ins Spiel. Sie ist eine kosteneffiziente Alternative, weil die meisten Ausgaben mit Berechnung zusammenhängen, die immer 100-mal teurer ist.
Langreichweitige Abhängigkeiten — LLMs können immer noch Dinge von "früh" im Gespräch vergessen, selbst mit der Transformer-Architektur.
F: Was hältst du von Open-Source-Projekten, die vorvektorisierte Inhalte bereitstellen? Cohere hat Wikipedia veröffentlicht, und ein anderes Projekt hat arXiv-Abstracts veröffentlicht. Was ist das beste Modell für die Bereitstellung von Open-Source-Vektorinhalten?
Es ist eine großartige Idee, etwas über semantische Suche zu lernen und die zusätzliche Zeit und die Kosten für die Generierung der Vektoren zu vermeiden. Abgesehen davon schränken dich vorab berechnete Vektoren stark ein, da sie dir nicht erlauben, zu verändern, wie oder was eingebettet wird. Was das beste Modell betrifft, gibt es nicht das eine, das die besten Ergebnisse für die von dir verwendeten Daten liefert — je beliebter das Modell ist, das du verwendest, desto höher ist die Wahrscheinlichkeit, dass dein Datensatz genutzt wird.
F: Wie funktioniert das Memory-Unterpaket in LangChain? Warum ist der Chat-Nachrichtenverlauf von Memory getrennt? Warum habt ihr es so gestaltet?
Wir arbeiten an einer Überarbeitung von Memory, um dies klarer zu machen.
Sieh dir die vollständige Webinar-Aufzeichnung an!
Sieh dir die Webinar-Aufzeichnung an, um mehr über LangChain und die Diskussion zwischen Filip und Harrison zu erfahren.
Weiterlesen

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.

Announcing VDBBench 1.0: Open-Source VectorDB Benchmarking with Your Real-World Production Workloads
Discover VDBBench 1.0, an open-source tool for benchmarking vector databases with real-world production data, streaming ingestion, and concurrent workloads.



