Testen Sie Elasticsearch: Sehen Sie sich unsere Beispiel-Notebooks an, starten Sie eine kostenlose Cloud-Testversion oder testen Sie Elastic jetzt auf Ihrem lokalem Gerät.
Das LangChain4j-Framework wurde 2023 mit folgendem Ziel entwickelt:
Das Ziel von LangChain4j ist es, die Integration von LLMs in Java-Anwendungen zu vereinfachen.
LangChain4j bietet eine standardisierte Methode, um:
- Einbettungen (Vektoren) aus einem gegebenen Inhalt erstellen, beispielsweise aus einem Text
- Einbettungen in einem Einbettungsspeicher speichern
- Suche nach ähnlichen Vektoren im Einbettungsspeicher
- mit LLMs sprechen
- Nutzen Sie die Chat-Speicherfunktion, um sich an den Kontext einer Diskussion mit einem LLM zu erinnern.
Diese Liste ist nicht vollständig, und die LangChain4j-Community implementiert ständig neue Funktionen.
Dieser Beitrag behandelt die ersten Hauptbestandteile des Frameworks.
Hinzufügen von LangChain4j OpenAI zu unserem Projekt
Wie bei allen Java-Projekten ist es einfach eine Frage der Abhängigkeiten. Hier verwenden wir Maven, aber das gleiche Ergebnis ließe sich auch mit jedem anderen Abhängigkeitsmanager erzielen.
Als ersten Schritt für das Projekt, das wir hier aufbauen wollen, werden wir OpenAI verwenden, daher müssen wir lediglich das langchain4j-open-ai -Artefakt hinzufügen:
Für den restlichen Code verwenden wir entweder unseren eigenen API-Schlüssel, den Sie durch die Registrierung eines Kontos bei OpenAI erhalten, oder den vom LangChain4j-Projekt bereitgestellten Schlüssel, der jedoch nur zu Demonstrationszwecken dient:
Wir können nun eine Instanz unseres ChatLanguageModel erstellen:
Und schließlich können wir eine einfache Frage stellen und die Antwort erhalten:
Die gegebene Antwort könnte etwa so lauten:
Wenn Sie diesen Code ausführen möchten, sehen Sie sich bitte die Klasse Step1AiChatTest.java an.
Mehr Kontext mit langchain4j
Fügen wir das langchain4j -Artefakt hinzu:
Dieses Tool bietet uns einen Werkzeugkasten, der uns dabei helfen kann, eine fortgeschrittenere LLM-Integration für unseren Assistenten zu entwickeln. Hier erstellen wir einfach eine Assistant -Schnittstelle, die die chat -Methode bereitstellt, welche automatisch die zuvor definierte ChatLanguageModel aufruft:
Wir müssen lediglich die Klasse LangChain4j AiServices bitten, eine Instanz für uns zu erstellen:
Und rufen Sie dann die Methode chat(String) auf:
Das System verhält sich genauso wie zuvor. Warum also haben wir den Code geändert? Erstens ist es eleganter, aber darüber hinaus können Sie dem LLM nun mithilfe einfacher Annotationen Anweisungen geben:
Dies ergibt nun Folgendes:
Wenn Sie diesen Code ausführen möchten, sehen Sie sich bitte die Klasse Step2AssistantTest.java an.
Wechsel zu einem anderen LLM: langchain4j-ollama
Wir können das großartige Ollama-Projekt nutzen. Es ist hilfreich, einen LLM lokal auf Ihrem Rechner auszuführen.
Fügen wir das langchain4j-ollama -Artefakt hinzu:
Da wir den Beispielcode mithilfe von Tests ausführen, fügen wir unserem Projekt Testcontainers hinzu:
Wir können jetzt Docker-Container starten/stoppen:
Wir müssen lediglich das model -Objekt in ein OllamaChatModel ändern, anstatt des zuvor verwendeten OpenAiChatModel :
Beachten Sie, dass das Abrufen des Bildes mit dem zugehörigen Modell einige Zeit in Anspruch nehmen kann, aber nach einer Weile erhalten Sie die Antwort:
Besser mit Speicher
Wenn wir mehrere Fragen stellen, merkt sich das System standardmäßig nicht die vorherigen Fragen und Antworten. Wenn wir also nach der ersten Frage „Wann wurde er geboren?“ fragen, Unsere Anwendung wird folgende Fragen beantworten:
Das ist Unsinn. Stattdessen sollten wir Chat Memory verwenden:
Die erneute Beantwortung derselben Fragen liefert nun ein aussagekräftiges Ergebnis:
Fazit
Im nächsten Beitrag werden wir herausfinden, wie wir mithilfe von Elasticsearch als Einbettungsspeicher Fragen an unseren privaten Datensatz stellen können. Das wird uns die Möglichkeit geben, unsere Anwendungssuche auf die nächste Stufe zu heben.
Häufige Fragen
Was ist LangChain4j?
LangChain4j (LangChain für Java) ist ein leistungsstarkes Toolset, mit dem Sie Ihre RAG-Anwendung in reinem Java erstellen können.




