Suche mit Jev und Milvus
Die Vektorsuche findet Informationen, die mit einer Suchanfrage in Zusammenhang stehen. Die Entwicklung einer nützlichen Suchanwendung erfordert zudem Entscheidungen: Welche Textpassagen beantworten die Frage tatsächlich, ob eine frühere Antwort wiederverwendet werden kann und ob ein Agent über genügend Anhaltspunkte verfügt, um die Suche zu beenden.
Milvus und Jev decken verschiedene Teile dieses Arbeitsablaufs ab. Milvus speichert Einbettungen und ruft Kandidaten-Datensätze ab, wobei Metadatenfilter für Einschränkungen wie Produktversion oder den Umfang der Wissensdatenbank zum Einsatz kommen. Jev bewertet die Bedeutung des abgerufenen Textes anhand von Anweisungen. Ihre Anwendung kann die Ergebnisse dieser Bewertung nutzen, um Belege auszuwählen oder den nächsten Suchschritt zu steuern.
Was macht Jev?
Eine Jev-Anfrage liefert Kontext und eine oder mehrere Beurteilungsfragen. Zu den typisierten Ausgaben gehören eine Auswahl aus festen Optionen, eine geordnete Bewertung und eine Ja/Nein-Wahrscheinlichkeit. Diese Ausgaben ermöglichen es dem Anwendungscode, eine Entscheidung zu treffen, ohne eine frei formulierte Erklärung analysieren zu müssen. Ein Generierungsmodell kann bei Bedarf weiterhin eine Antwort oder eine Folge-Suchanfrage verfassen.
Beispielsweise fragt ein Nutzer, wie man Atlas v2 installiert. Milvus kann die Suche auf die Dokumentation zu v2 beschränken und ähnliche Passagen zu Installation, Upgrades und Fehlerbehebung zurückgeben. Jev bewertet dann, welche Passagen die Ersteinrichtung erklären. Die Anwendung leitet die ausgewählten Belege an ein Modell zur Antwortgenerierung weiter.
Die Aufgaben sind klar definiert:
- Abruf mit Milvus: Finden von Kandidaten innerhalb der erforderlichen Metadaten-Einschränkungen.
- Beurteilung mit Jev: Bewertung dieser Kandidaten anhand der Frage und eines aufgabenspezifischen Kriteriums.
- Ausführung im Anwendungscode: Ergebnisse neu anordnen, Kontext filtern, eine Antwort wiederverwenden oder die Suche fortsetzen.
Einige Entscheidungen erfolgen bereits vor der Suche. Jev kann einen Suchbereich auswählen oder eingehende Dokumente bewerten, bevor sie in eine Sammlung aufgenommen werden. Die Zugriffskontrolle und exakte Filter bleiben in der Verantwortung der Anwendung.
Entdecken Sie die Suchszenarien
Die Sammlung „Search with Jev“ enthält neun ausführbare Tutorials. Jedes verwendet einen kleinen synthetischen Datensatz und zeigt die abgerufenen Datensätze, die Bewertungen und die daraus resultierenden Aktionen.
Bessere Belege auswählen
- Suchergebnisse neu ordnen: Dokumentationen und Erinnerungen von Programmieragenten neu anordnen. Eine Erinnerung an einen Laptop-Anschlussfehler kann einem Problem mit der Containerverbindung ähneln; eine nützlichere Erinnerung dokumentiert die tatsächliche Behebung des Problems zwischen Container und Host.
- Filtern Sie den abgerufenen Kontext: Unterscheiden Sie Anweisungen zur Erstinstallation von Passagen zu Upgrades und zur Fehlerbehebung, nachdem Milvus den Versionsfilter angewendet hat.
- Grafikbeziehungen neu ordnen: Beantworten Sie eine Frage zum Geburtsort eines Buchautors, indem Sie sowohl die Verbindung „Buch-Autor“ als auch die Beziehung „Autor-Geburtsort“ auswählen, und behalten Sie diese Reihenfolge beim Abrufen der Quellpassagen bei.
Steuerung der Suche und Wiederverwendung von Antworten
- Entscheiden, wann die Suche beendet werden soll: Ein Generierungsmodell schlägt Suchanfragen auf der Grundlage gesammelter Hinweise vor, während Jev beurteilt, ob die ursprüngliche Frage beantwortbar ist. Die Beispiele umfassen eine direkte Antwort, eine Frage mit zwei Verknüpfungsschritten und eine nicht verfügbare Tatsache, bei der die Suchgrenze ohne Antwort erreicht wird.
- Suchanfragen weiterleiten: Wählen Sie zwischen Dokumentations-, Abrechnungs- oder Speichersuche und wenden Sie anschließend den entsprechenden Milvus-Filter an. Eine Anfrage außerhalb des Geltungsbereichs nimmt einen separaten Pfad.
- Validierung der Wiederverwendung des semantischen Caches: Rufen Sie eine ähnliche zwischengespeicherte Anfrage ab und prüfen Sie anschließend, ob deren Antwort auch die Anforderungen der neuen Anfrage hinsichtlich Aufgabe, Sprache und Kontext erfüllt.
Verbessern und überprüfen Sie die Wissenspipeline
- Dokumente vor der Indizierung kuratieren: Unterscheiden Sie substanzielle operative Anleitungen von werblichen oder unvollständigen Inhalten, mit separaten Aktionen zum Indizieren, Überprüfen und Ausschließen.
- Abgerufene Textstellen prüfen: Identifizieren Sie Text, der versucht, einen Assistenten in die Irre zu führen, und behalten Sie dabei allgemeine Sicherheitshinweise bei. Dies ist ein zusätzlicher Prüfschritt, keine Sicherheitsgarantie.
- Suchbelege bewerten: Beurteilen Sie die Relevanz von Textpassagen, ob die Belege ausreichend sind und ob eine Antwort unbegründete Behauptungen enthält. In den Beispielen werden bewusst Belege entfernt oder unbegründete Aussagen hinzugefügt, um den Unterschied deutlich zu machen.
Eine vorgefertigte Schnittstelle zur Neugewichtung
Milvus Model stellt eine anwendungsseitige Schnittstelle „ JevRerankFunction “ bereit: Übergeben Sie eine Suchanfrage und Texte aus in Frage kommenden Dokumenten und erhalten Sie bewertete Ergebnisse mit ihren ursprünglichen Indizes, sortiert nach Relevanz. Verwenden Sie diese Indizes, um die von Milvus zurückgegebenen Datensätze neu zu ordnen.
Die Jev-Integration wurde integriert. Informationen zur aktuellen API finden Sie in den Implementierungs- und Konstruktoroptionen. Sie akzeptiert ` TYPESAFE_API_KEY ` und verwendet standardmäßig ` jev-latest`. Verwenden Sie eine Paketversion, die diese Integration enthält.
Der aktuelle Wrapper verwendet eine Relevanzabfrage nach dem „Claim-and-Evidence“-Prinzip. Prüfen Sie, ob dieses Kriterium zu Ihrer Aufgabe passt. Für benutzerdefinierte Bewertungen wie Speicherkompatibilität, Stoppen oder Routing folgen Sie den verlinkten Tutorials, in denen die TypeSafe-API direkt verwendet wird. Die Tutorials veranschaulichen direkte API-Aufrufe aus Python-Anwendungscode.
Probieren Sie es mit Milvus aus
Öffnen Sie das Tutorial zum Reranking in Colab, um mit der Kandidatenauswahl und -bewertung zu beginnen. Informationen zur lokalen Einrichtung und die vollständige Liste der Tutorials finden Sie in der README-Datei der Sammlung.
Die Beispiele verwenden einen Gemini-API-Schlüssel für Embeddings und einen TypeSafe-API-Schlüssel für Jev. Das Tutorial „Agentic Search“ nutzt zudem Gemini für die Abfrage- und Antwortgenerierung. Beispieltexte werden an diese API-Anbieter gesendet, und die Aufrufe können Credits verbrauchen.
Die Tutorials laufen standardmäßig mit Milvus Lite und enthalten Verbindungsoptionen für einen Milvus-Server oder die Zilliz Cloud. Die Arbeitsteilung ist bei allen Bereitstellungen gleich: Milvus ruft Kandidaten ab, und die Anwendung sendet den relevanten Text zur Beurteilung an Jev.
Betrachten Sie die Beispiele als Ausgangspunkt für Ihre eigenen Kriterien und Schwellenwerte. Ein Relevanzwert garantiert nicht, dass eine Antwort korrekt ist, und diese kleinen Trainingsdatensätze sagen nichts über die Genauigkeit oder Geschwindigkeit im Produktivbetrieb aus.
Entdecken Sie Implementierungen und Auswertungsergebnisse
Die folgenden Open-Source-Projekte wenden diese Ideen auf größere Such-Workflows an. Die verlinkten Berichte erläutern die Datensätze, Vergleiche und Einschränkungen der einzelnen Experimente.
| Projekt | Such-Anwendungsfall | Jev-Arbeit |
|---|---|---|
| MemSearch | Persistenter Markdown-Speicher für Programmieragenten | Jev-Implementierung · Bewertung |
| Vektor-Graph-RAG | Vektor- und Graph-Retrieval für Multi-Hop-Fragen | Jev-Implementierung · Bewertung |
| DeepSearcher | Iterative Suche in privatem Wissen | Experiment-Runner · Bewertung des Suchabbruchs (eigenständiges Experiment) |
| GPTCache | Wiederverwendung von Antworten auf kompatible Anfragen | Jev-Implementierung · Auswertung |
Der Beitrag von DeepSearcher ist ein eigenständiges Experiment zur Suchbeendigung. Die anderen Implementierungslinks zeigen aufgabenspezifische Jev-Integrationen. Die Ergebnisse dieser Projekte sollten in ihrem jeweiligen Bewertungskontext betrachtet werden und nicht als gemeinsamer Benchmark behandelt werden.