Autor |. Simon Bisson
Kuratiert |. Die kognitive Such-API von Microsoft bietet jetzt eine Vektorsuche als Dienst für die Verwendung mit großen Sprachmodellen in Azure OpenAI und mehr.
Tools wie Semantic Core, TypeChat und LangChain ermöglichen die Erstellung von Anwendungen rund um generative KI-Technologien wie Azure OpenAI. Dies liegt daran, dass sie die Auferlegung von Einschränkungen für das zugrunde liegende große Sprachmodell (LLM) ermöglichen, das als Werkzeug zum Erstellen und Ausführen von Schnittstellen in natürlicher Sprache verwendet werden kann
Im Wesentlichen ist ein LLM ein Werkzeug zum Navigieren in semantischen Räumen, in denen tiefe neuronale The Das Netzwerk kann ausgehend vom ersten Hinweis die nächste Silbe in einer Kette von Token vorhersagen. Wenn die Eingabeaufforderung offen ist, überschreitet das LLM möglicherweise seinen Eingabeumfang und produziert etwas, das vernünftig erscheint, in Wirklichkeit aber völliger Unsinn ist.
So wie wir alle dazu neigen, den Ergebnissen von Suchmaschinen zu vertrauen, neigen wir auch dazu, den Ergebnissen von LLM zu vertrauen, weil wir sie als einen weiteren Aspekt vertrauter Technologie betrachten. Das Training großer Sprachmodelle mithilfe vertrauenswürdiger Daten von Websites wie Wikipedia, Stack Overflow und Reddit vermittelt jedoch kein Verständnis des Inhalts, sondern ermöglicht lediglich die Generierung von Text, der denselben Mustern wie der Text in diesen Quellen folgt. Manchmal ist die Ausgabe korrekt, manchmal jedoch auch falsch.
Wie vermeiden wir Fehler und bedeutungslose Ausgaben großer Sprachmodelle und stellen sicher, dass unsere Benutzer genaue und vernünftige Antworten auf ihre Fragen erhalten?
1. Begrenzen Sie große Modelle mit semantischen Speicherbeschränkungen
Sie können ein bestimmtes Ausgabeformat erzwingen, indem Sie Tools wie TypeChat verwenden, oder Orchestrierungspipelines wie Semantic Kernel verwenden, um andere vertrauenswürdige Informationsquellen zu verarbeiten. Dadurch wird das Modell effektiv „verwurzelt“. das Modell in einem bekannten semantischen Raum, wodurch das LLM eingeschränkt wird. Hier kann LLM das tun, was es gut kann: die konstruierte Eingabeaufforderung zusammenfassen und auf der Grundlage dieser Eingabeaufforderung Text generieren, ohne dass es zu Überschreitungen kommt (oder zumindest die Wahrscheinlichkeit einer Überschreitung erheblich verringert wird).
Was Microsoft „semantisches Gedächtnis“ nennt, ist die Grundlage der letzten Methode. Das semantische Gedächtnis verwendet die Vektorsuche, um Hinweise bereitzustellen, die zur Bereitstellung der sachlichen Ausgabe des LLM verwendet werden können. Die Vektordatenbank verwaltet den Kontext der anfänglichen Eingabeaufforderung, die Vektorsuche sucht nach gespeicherten Daten, die mit der anfänglichen Benutzerabfrage übereinstimmen, und das LLM generiert den Text basierend auf diesen Daten. Sehen Sie sich diesen Ansatz in Bing Chat in Aktion an, der die nativen Vektorsuchtools von Bing verwendet, um Antworten zu erstellen, die aus seiner Suchdatenbank abgeleitet werden.
Semantisches Gedächtnis ermöglicht Vektordatenbanken und Vektorsuchen, um LLM-basierte Anwendungen bereitzustellen. Sie können eine der wachsenden Zahl von Open-Source-Vektordatenbanken verwenden oder Vektorindizes zu Ihren vertrauten SQL- und NoSQL-Datenbanken hinzufügen. Ein neues Produkt, das besonders nützlich erscheint, erweitert Azure Cognitive Search, indem es Ihren Daten einen Vektorindex hinzufügt und eine neue API zum Abfragen dieses Index bereitstellt
2. Vektorindex zu Azure Cognitive Search hinzufügen
Wie bei anderen Azure-Diensten ist Azure Cognitive Search ein verwalteter Dienst Dienst, der mit anderen Azure-Diensten funktioniert. Es ermöglicht Ihnen die Indizierung und Suche in verschiedenen Azure-Speicherdiensten sowie das Hosten von Text, Bildern, Audio und Video. Daten werden in mehreren Regionen gespeichert, was eine hohe Verfügbarkeit gewährleistet und Latenz- und Reaktionszeiten reduziert. Darüber hinaus können Sie für Unternehmensanwendungen Microsoft Entra ID (den neuen Namen für Azure Active Directory) verwenden, um den Zugriff auf private Daten zu steuern.
3 Einbettungsvektoren für Inhalte generieren und speichern. Es ist zu beachten, dass Azure Cognitive Search dies ist ein „Bring Your Own Embedding Vector“-Service. Cognitive Search generiert nicht die benötigten Vektoreinbettungen, daher müssen Sie Azure OpenAI oder die OpenAI-Einbettungs-API verwenden, um Einbettungen für Ihre Inhalte zu erstellen. Dies erfordert möglicherweise die Aufteilung großer Dateien in Blöcke, um sicherzustellen, dass Sie die Token-Grenzwerte des Dienstes einhalten. Seien Sie bereit, bei Bedarf neue Tabellen zu erstellen, um Vektordaten zu indizieren.
Microsoft verwendet diesen Vektorspeicher als Teil des Retrieval Augmented Generation (RAG)-Entwurfsmusters von Azure Machine Learning und in Verbindung mit seinem Prompt-Flow-Tool. RAG nutzt die Vektorindizierung in der kognitiven Suche, um den Kontext aufzubauen, der die Grundlage für LLM-Eingabeaufforderungen bildet. Dies bietet Ihnen eine einfache Möglichkeit, Vektorindizes zu erstellen und zu verwenden, beispielsweise um die Anzahl ähnlicher Dokumente festzulegen, die von einer einfachen Abfrage zurückgegeben werden. Beginnen Sie mit der Erstellung von Ressourcen für Azure OpenAI und Cognitive Search in derselben Region. Dadurch können Sie den Suchindex mit minimaler Latenz mit Einbettungen laden. Sie müssen die Azure OpenAI-API und die Cognitive Search-API aufrufen, um den Index zu laden. Daher empfiehlt es sich, sicherzustellen, dass Ihr Code auf mögliche Ratenbeschränkungen im Dienst für Sie reagieren kann, indem Sie Code hinzufügen, der Wiederholungsversuche verwaltet. Wenn Sie die Service-API verwenden, sollten Sie asynchrone Aufrufe verwenden, um Einbettungen zu generieren und Indizes zu laden.
Nachdem Sie das Indexschema für die Vektorsuche definiert haben, können Sie Daten in den Index für die kognitive Suche laden. Beachten Sie, dass Daten möglicherweise mehreren Vektoren zugeordnet sind. Wenn Sie beispielsweise die kognitive Suche zum Hosten von Unternehmensdokumenten verwenden, verfügen Sie möglicherweise über einen separaten Vektor für wichtige Dokumentmetadatenbegriffe und Dokumentinhalte. Der Datensatz muss als JSON-Dokument gespeichert werden, was die Verwendung der Ergebnisse zum Zusammenstellen des Eingabeaufforderungskontexts vereinfacht. Der Index muss nicht das Quelldokument enthalten, da er die Verwendung der gängigsten Azure-Speicheroptionen unterstützt
Bevor Sie die Abfrage ausführen, müssen Sie zunächst das Einbettungsmodell Ihrer Wahl mit dem Abfragetext aufrufen. Dadurch wird ein mehrdimensionaler Vektor zurückgegeben, den Sie zum Durchsuchen des Index Ihrer Wahl verwenden können. Geben Sie beim Aufruf der Vektorsuch-API den Zielvektorindex, die gewünschte Anzahl von Übereinstimmungen und die relevanten Textfelder im Index an. Die Auswahl des geeigneten Ähnlichkeitsmaßes kann bei Abfragen sehr hilfreich sein. Am häufigsten wird dabei die Kosinusmetrik verwendet
5 Über einfache Textvektoren hinaus
Die Vektorfunktionen von Azure Cognitive Search gehen über den bloßen Abgleich von Text hinaus. Cognitive Search kann mit mehrsprachigen Einbettungen verwendet werden, um Dokumentsuchen in mehreren Sprachen zu unterstützen. Sie können auch komplexere APIs verwenden. Sie können beispielsweise die semantischen Suchtools von Bing in Hybrid Search kombinieren, um genauere Ergebnisse zu liefern und so die Qualität der Ausgabe von LLM-basierten Anwendungen zu verbessern.
Das obige ist der detaillierte Inhalt vonErstellen Sie eine LLM-Anwendung: Nutzen Sie die Vektorsuchfunktionen von Azure Cognitive Services. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!