Wróć do wszystkich projektów

LlamaTalks

Języki: Java
Opublikowano: Zaktualizowano:

Streszczenie

LlamaTalks to otwartoźródłowy chatbot w Spring Boot, który utrzymuje model językowy lokalnie przez Ollamę i dodaje odpowiedzi oparte na dokumentach dzięki Retrieval-Augmented Generation. Użytkownik może wczytać dokumenty, pozwolić Apache Tika wydobyć i podzielić ich tekst, wygenerować embeddingi oraz zapisać je do wyszukiwania semantycznego, a potem zadawać pytania w rozmowie z trwałą historią. LangChain4j łączy pobrany kontekst i pamięć konwersacji z Ollamą. Reactor/Flux oraz Server-Sent Events strumieniują odpowiedź do klienta zamiast czekać na jeden ukończony rezultat. Projekt udostępnia REST API, zarządzanie rozmowami, listę dokumentów oraz wybór modeli czatu i embeddingów. Repozytorium ma 21 publicznych commitów. README opisuje architekturę i konfigurację, ale zaznacza, że nie każdy wymieniony format dokumentu był testowany, a zmiana wymiaru embeddingów wymaga wyczyszczenia magazynu i ponownej ingestii.

Zweryfikowane fakty

  • Publiczne repozytorium ma zapisane 21 commitów.
  • README wymienia Spring Boot, LangChain4j, Ollamę, SSE, trwałą historię i ingestję dokumentów RAG.
  • Apache Tika parsuje dokumenty przed dzieleniem, tworzeniem embeddingów i wyszukiwaniem semantycznym.

Architektura techniczna

Ścieżka żądania składa się z dwóch połączonych przepływów:

  • Core Backend: Zbudowany z Spring Boot 3, wykorzystując JPA/Hibernate dla trwałości danych strukturalnych (rozmowy, wiadomości).
  • Orkiestracja AI: LangChain4j zarządza interakcją z LLM, zarządzaniem pamięcią i potokiem RAG.
  • Pozyskiwanie danych: Apache Tika jest używany do parsowania i wyodrębniania tekstu z różnych formatów dokumentów dla magazynu wektorów.
  • Magazyn wektorów: Osadzenia są generowane lokalnie i przechowywane w bazie danych wektorów, aby umożliwić możliwości wyszukiwania semantycznego.
PIPELINE RAG odpowiedź z kontekstem
  1. 01 Dokument Tika → fragmenty
  2. 02 Vector store embeddingi + retrieval
  3. 03 Ollama kontekst + historia
  4. 04 SSE Reactor/Flux

orkiestracja LangChain4j · historia w PostgreSQL

Granica modeli

Wymiary embeddingów są częścią kontraktu przechowywania danych. Zmiana modelu embeddingowego może zmienić ten wymiar, dlatego przed ponownym wyszukiwaniem semantycznym trzeba wyczyścić bazę i ponownie wczytać wszystkie dokumenty.

Kluczowe funkcje

  • RAG świadomy kontekstu: Dynamicznie pobiera istotne informacje z przesłanych dokumentów, aby dokładnie odpowiedzieć na zapytania użytkownika.
  • Streaming API: Wykorzystanie zasad Spring WebFlux do nieblokującego przesyłania tokenów w czasie rzeczywistym.
  • Elastyczna obsługa modeli: Łatwo przełączaj się między różnymi modelami open-source (Llama 3, Mistral, Gemma) hostowanymi za pośrednictwem Ollama.
  • Utrwalona historia czatu: Pełna historia rozmowy jest przechowywana w PostgreSQL, umożliwiając zachowanie kontekstu między sesjami.

Jak to zweryfikowano: Zobacz publiczne repozytorium ↗

Użyte technologie

JavaSpring BootLangChain4jOllamaRAGSSEPostgreSQL