So verwenden Sie Einbettungen in LangChain

So Verwenden Sie Einbettungen In Langchain



Einbettungen sind ein Index für die Zusammengehörigkeit von Textzeichenfolgen und werden durch einen Vektor (eine Liste) von Gleitkomma-Ganzzahlen ausgedrückt. Der Abstand zwischen zwei Vektoren dient als Maß dafür, wie eng sie miteinander verbunden sind; Je kleiner der Abstand, desto enger ist der Zusammenhang. Die LangChain Embedding-Klasse soll als Schnittstelle für Einbettungsdienste wie OpenAI, HuggingFace und andere dienen.

Die Basisklasse stellt zwei Methoden zur Verfügung: „embed_query()“ und „embed_documents()“. Die erste davon arbeitet mit einem einzelnen Dokument, während die andere mit vielen Dokumenten arbeiten kann.

Dieser Artikel umfasst die praktische Demonstration der Einbettung in LangChain mithilfe der OpenAI-Texteinbettungen.







Beispiel: Erhalten eines einzelnen Eingabetextes mithilfe der OpenAI-Texteinbettung

Für die erste Abbildung geben wir eine einzelne Textzeichenfolge ein und rufen die OpenAI-Texteinbettung dafür ab. Das Programm beginnt mit der Installation der benötigten Bibliotheken.



Die erste Bibliothek, die wir in unserem Projekt installieren müssen, ist LangChain. Da die Python-Standardbibliothek nicht im Lieferumfang enthalten ist, müssen wir sie separat installieren. Da Langchain auf PyPi verfügbar ist, können wir es einfach mit dem Befehl pip auf dem Terminal installieren. Daher führen wir den folgenden Befehl aus, um die LangChain-Bibliothek zu installieren:



$ pip Langchain installieren

Sobald die Anforderungen erfüllt sind, wird die Bibliothek installiert.





Außerdem muss die OpenAI-Bibliothek in unserem Projekt installiert sein, damit wir auf die OpenAI-Modelle zugreifen können. Diese Bibliothek kann durch Schreiben des Befehls pip eröffnet werden:

$ pip openai installieren

Jetzt sind beide erforderlichen Bibliotheken in unserer Projektdatei installiert. Wir müssen die benötigten Module importieren.



aus langchain. Einbettungen . openai importieren OpenAIEmbeddings

importieren Du

Du . etwa [ „OPENAI_API_KEY“ ] = „sk-YOUR_API_KEY“

Um die OpenAI-Einbettungen zu erhalten, müssen wir die OpenAIEmbeddings-Klasse aus dem Paket „langchain.embeddings.openai“ importieren. Dann legen wir den API-Schlüssel als Umgebungsvariable fest. Wir benötigen den geheimen API-Schlüssel, um auf die verschiedenen OpenAI-Modelle zuzugreifen. Dieser Schlüssel kann von der OpenAI-Plattform generiert werden. Melden Sie sich einfach an und erhalten Sie einen geheimen Schlüssel im Abschnitt „Geheimen Schlüssel anzeigen“ Ihres Profils. Dieser Schlüssel kann projektübergreifend für einen bestimmten Kunden verwendet werden.

Die Umgebungsvariablen werden zum Speichern der API-Schlüssel für eine bestimmte Umgebung verwendet, anstatt sie fest in die Funktionen zu codieren. Um den API-Schlüssel als Umgebungsvariable festzulegen, müssen wir also das Modul „os“ importieren. Mit der Methode os.environ() wird der API-Schlüssel als Umgebungsvariable festgelegt. Es enthält einen Namen und einen Wert. Der von uns festgelegte Name ist „OPENAI_API_KEY“ und der geheime Schlüssel ist auf „value“ festgelegt.

Modell = OpenAIEmbeddings ( )

Eingabetext = „Das dient der Demonstration.“

Ergebnis = Modell. eingebettete_Abfrage ( Eingabetext )

drucken ( Ergebnis )

drucken ( nur ( Ergebnis ) )

Wir haben bereits eine Schnittstelle zum OpenAI-Einbettungs-Wrapper hergestellt. Anschließend rufen wir den Konstruktor der OpenAIEmbedding-Klasse auf. OpenAI bietet eine Vielzahl von Einbettungsmodellen, für die Sie jedoch bezahlen müssen. Hier verwenden wir das Standard-Einbettungsmodell von OpenAI, d. h. text-embedding-ada-002, das kostenlos ist. Wenn Sie keinen Modellnamen als Parameter angeben, wird das Standardmodell verwendet.

Anschließend geben wir den Text an, dessen Einbettung erfolgen soll. Der Text ist mit „Dies dient der Demonstration“ angegeben. und speichern Sie es in der Variable input_text. Danach wird die Methode „embed_query()“ zum Einbetten des bereitgestellten Texts mit dem verwendeten Modell und dem Eingabetext aufgerufen, der die Textzeichenfolge zum Abrufen der als Parameter bereitgestellten Einbettung enthält. Die abgerufenen Einbettungen werden dem Ergebnisobjekt zugewiesen.

Um das Ergebnis schließlich sichtbar zu machen, haben wir die print()-Methode von Python. Wir müssen lediglich das Objekt, das den Wert speichert, den wir anzeigen möchten, an die print()-Methode übergeben. Daher rufen wir diese Funktion zweimal auf; Erstens, um die Liste der Gleitkommazahlen anzuzeigen, und zweitens, um die Länge dieser Werte mithilfe der len()-Methode auszudrucken.

Die Liste der Gleitkommawerte ist im folgenden Schnappschuss mit der Länge dieser Werte zu sehen:

Beispiel: Erhalten mehrerer Eingabetexte/-dokumente mithilfe der OpenAI-Texteinbettung

Wir können nicht nur die Einbettung für einen einzelnen Eingabetext erhalten, sondern auch für mehrere Eingabezeichenfolgen abrufen. Dies setzen wir in dieser Abbildung um.

Wir haben die Bibliotheken bereits in der vorherigen Abbildung installiert. Eine weitere Bibliothek, die wir hier installieren müssen, ist die Tiktoken-Bibliothek von Python. Schreiben Sie den Befehl auf das Terminal, um es zu installieren:

$ pip Tiktoken installieren

Das Tiktoken-Paket ist ein Byte-Pair-Encoding-Tokenizer. Es wird mit den OpenAI-Modellen verwendet und zerlegt Text in Token. Dies wird verwendet, da die bereitgestellten Zeichenfolgen für das angegebene OpenAI-Modell manchmal etwas lang sind. Daher wird der Text aufgeteilt und in Token kodiert. Lassen Sie uns nun am Hauptprojekt arbeiten.

aus langchain. Einbettungen . openai importieren OpenAIEmbeddings

Modell = OpenAIEmbeddings ( openai_api_key = „sk-YOUR_API_KEY“

strings = ['
Das Ist für Demonstration. ',' Das Zeichenfolge Ist Auch für Demonstration. ',' Das Ist noch eine Demo Zeichenfolge . ',' Dieses hier Ist zuletzt Zeichenfolge . ']

Ergebnis = model.embed_documents(strings)

drucken(Ergebnis)

print(len(result))

Die OpenAIEmbeddings-Klasse wird aus dem Paket „langchain.embeddings.openai“ importiert. Im vorherigen Beispiel haben wir den API-Schlüssel als Umgebungsvariable festgelegt. Aber in diesem Fall übergeben wir es direkt an den Konstruktor. Daher müssen wir das „os“-Modul hier nicht importieren.

Nachdem wir das OpenAI-Modell aufgerufen haben, bei dem es sich um OpenAIEmbeddings handelt, übergeben wir ihm den geheimen API-Schlüssel. In der nächsten Zeile werden die Textzeichenfolgen angegeben. Hier speichern wir vier Textzeichenfolgen in den Objektzeichenfolgen. Diese Zeichenfolgen sind „Dies dient der Demonstration“, „Diese Zeichenfolge dient auch der Demonstration“, „Dies ist eine weitere Demozeichenfolge“ und „Dies ist die letzte Zeichenfolge.“

Sie können mehrere Zeichenfolgen angeben, indem Sie sie einfach durch ein Komma trennen. Im vorherigen Fall wurde die Methode „embed_text()“ aufgerufen, wir können sie hier jedoch nicht verwenden, da sie nur für die einzelne Textzeichenfolge funktioniert. Um mehrere Zeichenfolgen einzubetten, steht uns die Methode „embed_document()“ zur Verfügung. Also rufen wir es mit dem angegebenen OpenAI-Modell und den angegebenen Textzeichenfolgen als Argument auf. Die Ausgabe wird im Ergebnisobjekt gespeichert. Um schließlich die Ausgabe anzuzeigen, wird die Python-Methode print() mit dem Objektergebnis als Parameter verwendet. Außerdem möchten wir die Länge dieser Gleitkommawerte sehen. Daher rufen wir die len()-Methode innerhalb der print()-Methode auf.

Die abgerufene Ausgabe ist im folgenden Bild dargestellt:

Abschluss

In diesem Beitrag wurde das Konzept der Einbettung in LangChain besprochen. Wir haben gelernt, was Einbettung ist und wie sie funktioniert. Eine praktische Umsetzung der Einbettung der Textzeichenfolgen wird hier gezeigt. Wir haben zwei Illustrationen durchgeführt. Im ersten Beispiel ging es darum, die Einbettung einer einzelnen Textzeichenfolge abzurufen, und im zweiten Beispiel wurde untersucht, wie man mithilfe des OpenAI-Einbettungsmodells die Einbettung mehrerer Eingabezeichenfolgen erhält.