6 Punkte von sungmin330 2025-05-08 | 4 Kommentare | Auf WhatsApp teilen

TL;DR

Ein personalisierter LLM-Chat-Agent. Er sammelt dynamisch Nutzerinformationen und liefert später personalisierte Antworten.

Q) Ich mag Kartoffeln

A) Verstehe

Q) Was mag ich?

A) Du magst Kartoffeln~

Demo-Link: https://delosplatform.com
GitHub: https://github.com/sungminna/mcp_poc

ps) delos-lucia ist eine Version, die die Funktionen des Velt-Service paketiert und verbessert. delos-lucia unterstützt kurze response time, LLM-Streaming und verbesserte asynchrone Logik.

Nach der Registrierung (Login) kann es sofort genutzt werden. Viel Interesse und Feedback sind willkommen...

Lucia & Velt: Personalisierter LLM-Chat-Agent

In letzter Zeit gibt es immer mehr Versuche, mit LLMs Informationen aus der Interaktion mit Nutzern zu strukturieren und diese anschließend wieder für LLM-Antworten zu nutzen, um ein personalisiertes Erlebnis zu bieten. Lucia und Velt sind Open-Source-Projekte, die dieses Ziel erreichen sollen. Lucia ist eine Python-Bibliothek, die zentrale AI-Funktionen für die Umsetzung personalisierter LLMs modularisiert, und Velt ist ein personalisiertes RAG-Chat-System, das auf den Konzepten von Lucia aufbaut.

Lucia: Modul für personalisierte LLMs

delos-lucia ist eine Python-Bibliothek, die zentrale AI-Funktionen neu strukturiert und paketiert, die ursprünglich für den Velt-Service entwickelt wurden. Durch ihren modularen Aufbau lassen sich benötigte Funktionen leicht selektiv nutzen oder anpassen.

Hauptfunktionen:

  • Extraktion persönlicher Informationen und Keywords: Mithilfe eines LLMs (z. B. OpenAI-Modelle) identifiziert und extrahiert sie aus Text persönliche Informationen wie Nutzerpräferenzen, Statusangaben sowie zentrale Keywords.
  • Embedding-Erzeugung: Mit OpenAIs Embedding-Modellen werden Vektorrepräsentationen (Embeddings) von Text erzeugt. Die erzeugten Embeddings können über Redis zwischengespeichert werden, um Kosten durch wiederholte API-Aufrufe zu reduzieren.
  • Datenspeicherung: Extrahierte strukturierte Informationen (persönliche Informationen, Beziehungen usw.) werden in einer Graph-Datenbank (Neo4j oder Clickhouse) gespeichert, erzeugte Vektor-Embeddings in einem Vector Store (Milvus), um eine effiziente Suche zu unterstützen.
  • Bereitstellung von Pipelines: Vorgefertigte Pipelines für typische Aufgaben wie KnowledgePipeline (Workflow von Informationsextraktion über Embedding-Erzeugung bis zur Speicherung) und SearchPipeline (Workflow für keywordbasierte Informationssuche und Kontextanreicherung) verbessern den Entwicklerkomfort.
  • Customizing: Es gibt eine Plug-in-Architektur, mit der Komponenten wie Informations-/Keyword-Extractor (Extractor), Embedding-Client (EmbeddingClient), Informationsspeicher (InfoStore) und Vector Store (VectorStore) durch selbst implementierte Komponenten ersetzt werden können.

Lucia abstrahiert die zentrale Backend-Logik, die für den Aufbau personalisierter AI-Anwendungen nötig ist — Informationsextraktion, Vektorisierung, Speicherung und Suche — und hilft Entwicklern so, sich stärker auf die Anwendungslogik zu konzentrieren. (Lizenz: Apache-2.0)

GitHub Repository: https://github.com/sungminna/mcp_poc/tree/main/lucia

Velt: PoC eines personalisierten RAG-Chatbots mit Lucia-Komponenten/-Konzepten

Velt ist eine FastAPI-basierte Backend-Anwendung, die auf den von der Lucia-Bibliothek bereitgestellten Konzepten aufbaut. Durch die Integration eines ReAct-Agenten (LangGraph), eines Neo4j-Wissensgraphen, eines Milvus-Vector-Stores, von PostgreSQL und Redis soll Nutzern ein personalisiertes RAG-Chatbot-Erlebnis (Retrieval-Augmented Generation) geboten werden. Über Gespräche mit Nutzern werden personalisierte Informationen dynamisch in einem Wissensgraphen aufgebaut, der anschließend genutzt wird, um relevantere Antworten zu erzeugen.

Zentrale Funktionsweise:

  1. Aufbau des Wissensgraphen:
    • Aus Gesprächen mit dem Nutzer ("Ich mag Hamburger") extrahiert das LLM Beziehungen ((Nutzer) --mag--> (Hamburger)).
    • Die extrahierten Informationen werden als Knoten und Kanten in der Neo4j-Graph-DB gespeichert. Dabei werden auch Oberbegriff-Beziehungen wie (Hamburger) --gehört zu--> (Essen) gespeichert, um flexible Schlussfolgerungen und Suchen zu ermöglichen. ("Welche Art von Essen mag ich?"), (in lucia wird ein etwas effizienterer Ansatz verwendet)
  2. Antworterzeugung auf RAG-Basis:
    • Aus einer Nutzerfrage ("Mag ich Kunst?") extrahiert das LLM Keywords ("Kunst", "mögen").
    • Mit diesen Keywords werden in Milvus per Vektorsuche hochrelevante Informationen gefunden.
    • Gleichzeitig werden in Neo4j Knoten und Beziehungen erkundet, die mit dem jeweiligen Nutzer und den Keywords verbunden sind (direkte Beziehungen, 1-2-Hop-Beziehungen, einschließlich Unterbegriffe).
    • Die aus Milvus und Neo4j gefundenen Informationen werden als Kontext kombiniert und der Prompt des auf LangGraph basierenden ReAct-Agenten wird erweitert (augmentiert). (+ Sitzungs-Chatverlauf)
    • Auf Basis dieses erweiterten Kontexts erzeugt der Agent eine personalisierte Antwort auf die Nutzerfrage.

Tech-Stack:

  • Backend: FastAPI, Uvicorn, Python 3.13+
  • AI/LLM: LangChain, LangGraph, langchain-openai, OpenAI Embeddings
  • Datenbanken: Neo4j (Graph), Milvus (Vector), PostgreSQL (User/Chat-Daten), Redis (Cache)
  • Sonstiges: SQLAlchemy (Async), JWT (Auth), slowapi (Rate Limiting), Poetry, Docker
  • Frontend: SvelteKit (separates velt/-Verzeichnis)

Wesentliche Ergebnisse und Überlegungen:

  • Machbarkeit bestätigt: Es wurde bestätigt, dass sich durch die Kombination von LLMs mit Graph-/Vector-DBs dynamisch personalisierte Wissensgraphen aufbauen lassen und damit hochgradig personalisierte LLM-Services möglich sind.
  • Performance: Derzeit wurden Engpässe beim DB-Zugriff (Queries) beobachtet, weshalb Optimierungen nötig sind. Auch die Performance von Neo4j in großen Echtzeitumgebungen muss noch validiert werden. (teilweise in lucia gelöst)
  • Antwortqualität: Obwohl das LLM auf Basis der gefundenen Informationen (Kontext) antwortet, sind weitere Validierung und Verbesserungen nötig, um sicherzustellen, dass die Antworten stets die relevantesten und natürlichsten sind. Insbesondere bei RAG muss die Tendenz zu unnatürlichen Antworten gelöst werden, wenn zu stark vom Kontext abhängt.
  • Prompt Engineering: Da das LLM Anweisungen gelegentlich nicht befolgt, müssen Prompt-Verbesserungen und mögliche Probleme mit der Modellleistung geprüft werden.
  • Skalierbarkeit: Die derzeit hartkodierten DB-Queries könnten durch Text-to-Cypher/SQL o. Ä. ersetzt werden, um die Flexibilität zu erhöhen. Wenn keine Analyse von Beziehungen zwischen Nutzern erforderlich ist, könnte auch ein RDB-basierter Aufbau in Betracht gezogen werden. (in lucia verbessert, sodass auch Clickhouse genutzt werden kann)

GitHub Repository: https://github.com/sungminna/mcp_poc
Demo Service: https://delosplatform.com
Directory: https://my.surfit.io/w/528136765


Zusammenfassung:

Lucia ist eine modulare Python-Bibliothek für LLM-basierte Extraktion persönlicher Informationen/Keywords, Embeddings sowie Speicherung in Graph-/Vector-DBs. Velt ist ein FastAPI-basierter PoC, der mithilfe der Konzepte von Lucia über Gespräche mit Nutzern einen dynamischen Wissensgraphen (Neo4j) aufbaut und Vektorsuche (Milvus) mit RAG (LangGraph ReAct-Agent) kombiniert, um personalisierte Chatbot-Antworten bereitzustellen. Beide Projekte zeigen das Potenzial personalisierter AI, bringen aber auch offene Aufgaben wie Performance-Optimierung und natürlichere Antworten mit sich.

4 Kommentare

 
sungmin330 2025-05-11

Da es sich um ein LLM handelt, läuft es nicht immer stabil (T_T)... bitte nutzt es trotzdem gern und oft.
Falls sich jemand dafür interessiert: Ich schreibe mal auf, woran die bisherigen Performance-Probleme lagen.

  • Im Prompt wurde festgelegt, Keywords auf Englisch zu extrahieren, aber gelegentlich werden sie auf Koreanisch extrahiert, was die Suche einschränkt
  • In manchen Fällen werden keine passenden Keywords extrahiert
  • Nach dem Embedding der Keywords wird per Ähnlichkeitsmessung eine semantische Suche durchgeführt, aber die Performance ist uneindeutig

ps) Die Performance von delos-lucia ist besser als die des PoC-Webs. Wenn ihr delos-lucia Shell-basiert ausführt, werdet ihr wahrscheinlich noch bessere Ergebnisse sehen.

ps) Nachdem ich den Service tatsächlich selbst gebaut habe, merke ich, dass sowohl QA schwierig ist als auch die Einführung von Eval. Wenn nur die LLM-Performance gut genug wäre, ließe sich irgendwie alles lösen, aber ich habe festgestellt, dass außerhalb des Modells deutlich mehr Aufwand nötig ist als erwartet.

 
1206good 2025-05-08

Ich habe vor Kurzem ein ähnliches Projekt gesehen, klingt interessant.
Ich werde es einmal ausprobieren.

Website: https://www.secondme.io/
GitHub-Repo: https://github.com/mindverse/Second-Me

 
sungmin330 2025-05-11

Oh, ein interessantes Projekt!! Danke

 
rlaehdus2003 2025-05-08

KI, die mich besser kennt als ich mich selbst ..?