Personal AI Agent: ¿qué pasa si el LLM llega a conocerme?
(delosplatform.com)TL;DR
Un agente de chat LLM personalizado. Recopila dinámicamente información del usuario para ofrecer después respuestas personalizadas.
P) Me gustan las papas
R) Ya veo
P) ¿Qué es lo que me gusta?
R) Te gustan las papas~
Enlace de demo: https://delosplatform.com
GitHub: https://github.com/sungminna/mcp_poc
P. D.) delos-lucia es una versión que empaqueta y mejora las funciones del servicio velt. delos-lucia admite tiempos de respuesta cortos, streaming de LLM y lógica asíncrona mejorada.
Puedes usarlo inmediatamente después de registrarte (iniciar sesión). Agradeceré mucho su interés y sus comentarios...
Lucia & Velt: agente de chat LLM personalizado
Últimamente han aumentado los intentos de usar LLM para estructurar la información obtenida a través de la interacción con el usuario y reutilizarla en las respuestas del LLM para ofrecer una experiencia personalizada. Lucia y Velt son proyectos open source creados para lograr ese objetivo. Lucia es una librería de Python que modulariza funciones clave de IA para implementar un LLM personalizado, y Velt es un sistema de chat RAG personalizado construido con base en los conceptos de Lucia.
Lucia: módulo de LLM personalizado
delos-lucia es una librería de Python que reorganiza y empaqueta funciones centrales de IA que originalmente fueron desarrolladas para el servicio Velt. Está compuesta de forma modular, por lo que es fácil usar solo las funciones necesarias o personalizarlas.
Funciones principales:
- Extracción de información personal y palabras clave: usa un LLM (como modelos de OpenAI) para identificar y extraer del texto información personal del usuario, como preferencias o estado, además de palabras clave importantes.
- Generación de embeddings: usa el modelo de embeddings de OpenAI para generar representaciones vectoriales (embeddings) del texto. Los embeddings generados pueden almacenarse en caché mediante Redis para reducir el costo de llamadas repetitivas a la API.
- Almacenamiento de datos: la información estructurada extraída (información personal, relaciones, etc.) se guarda en una base de datos de grafos (Neo4j or Clickhouse), y los embeddings vectoriales generados se almacenan en un vector store (Milvus) para permitir búsquedas eficientes.
- Pipelines listos para usar: ofrece pipelines preconstruidos para tareas comunes, como
KnowledgePipeline(flujo de trabajo desde la extracción de información hasta la generación de embeddings y el almacenamiento) ySearchPipeline(flujo de trabajo para búsqueda de información por palabras clave y aumento de contexto), lo que mejora la productividad del desarrollo. - Personalización: ofrece una arquitectura tipo plug-in que permite reemplazar componentes como el extractor de información/palabras clave (
Extractor), el cliente de embeddings (EmbeddingClient), el almacén de información (InfoStore) y el vector store (VectorStore) por componentes implementados directamente por el usuario.
Lucia abstrae y ofrece la lógica central de backend necesaria para crear aplicaciones de IA personalizadas (extracción de información, vectorización, almacenamiento y búsqueda), ayudando a que los desarrolladores puedan concentrarse más en la lógica de la aplicación. (Licencia: Apache-2.0)
Repositorio de GitHub: https://github.com/sungminna/mcp_poc/tree/main/lucia
Velt: PoC de chatbot RAG personalizado que utiliza componentes/conceptos de Lucia
Velt es una aplicación backend basada en FastAPI construida aprovechando los conceptos que ofrece la librería Lucia. Integra un agente ReAct (LangGraph), un knowledge graph de Neo4j, vector store de Milvus, PostgreSQL y Redis, con el objetivo de ofrecer a los usuarios una experiencia de chatbot RAG (Retrieval-Augmented Generation) personalizada. Construye dinámicamente información personalizada en el knowledge graph a partir de las conversaciones con el usuario, y la utiliza para generar respuestas más relevantes.
Forma de funcionamiento principal:
- Construcción del knowledge graph:
- A partir de una conversación con el usuario ("Me gustan las hamburguesas"), extrae relaciones con un LLM (
(usuario) --le_gusta--> (hamburguesa)). - La información extraída se guarda como nodos y aristas en la base de datos de grafos Neo4j. En este proceso, también se almacenan relaciones de conceptos de nivel superior, como
(hamburguesa) --está_incluida_en--> (comida), para permitir inferencia y búsqueda más flexibles. ("¿Qué comida me gusta?"), (en lucia se usa un método un poco más eficiente)
- A partir de una conversación con el usuario ("Me gustan las hamburguesas"), extrae relaciones con un LLM (
- Generación de respuestas basada en RAG:
- A partir de la pregunta del usuario ("¿Me gusta el arte?"), extrae con un LLM palabras clave como "arte" y "gustar".
- Usa esas palabras clave para encontrar en Milvus información altamente relevante mediante búsqueda vectorial.
- Al mismo tiempo, explora en Neo4j los nodos y relaciones conectados con ese usuario y esas palabras clave (relaciones directas, relaciones de 1-2 saltos e inclusión de subconceptos).
- Combina como contexto la información recuperada de Milvus y Neo4j para aumentar el prompt del agente ReAct basado en LangGraph. (+ historial de conversación de la sesión)
- El agente genera una respuesta personalizada a la pregunta del usuario con base en ese contexto aumentado.
Stack tecnológico:
- Backend: FastAPI, Uvicorn, Python 3.13+
- IA/LLM: LangChain, LangGraph, langchain-openai, OpenAI Embeddings
- Bases de datos: Neo4j (Graph), Milvus (Vector), PostgreSQL (User/Chat Data), Redis (Cache)
- Otros: SQLAlchemy (Async), JWT (Auth), slowapi (Rate Limiting), Poetry, Docker
- Frontend: SvelteKit (directorio
velt/separado)
Resultados principales y consideraciones:
- Confirmación de viabilidad: se confirmó la posibilidad de construir dinámicamente un knowledge graph personalizado combinando LLM con bases de datos de grafos/vectores, y de implementar un servicio LLM hiperpersonalizado a partir de ello.
- Rendimiento: actualmente se observa un cuello de botella en la parte de acceso a la base de datos (consultas), por lo que se necesita optimización. También hace falta validar el rendimiento de Neo4j en entornos grandes y en tiempo real. (parcialmente resuelto en lucia)
- Calidad de respuesta: aunque el LLM responde con base en la información recuperada (contexto), aún hace falta validar y mejorar si siempre ofrece las respuestas más relevantes y naturales. En particular, al aplicar RAG, es necesario resolver la tendencia a depender en exceso del contexto y producir respuestas poco naturales.
- Prompt engineering: en ocasiones el LLM no sigue las instrucciones, por lo que hace falta mejorar los prompts y revisar posibles problemas de rendimiento del modelo.
- Escalabilidad: las consultas a BD actualmente hardcodeadas podrían reemplazarse por Text-to-Cypher/SQL, etc., para aumentar la flexibilidad. Si no se analiza la relación entre usuarios, también podría evaluarse una construcción basada en RDB. (mejorado en lucia para permitir el uso de clickhouse)
Repositorio de GitHub: https://github.com/sungminna/mcp_poc
Servicio demo: https://delosplatform.com
Directorio: https://my.surfit.io/w/528136765
Resumen:
Lucia es una librería modular de Python para extracción de información personal/palabras clave basada en LLM, embeddings y almacenamiento en bases de datos de grafos/vectores. Velt es un PoC basado en FastAPI que usa los conceptos de Lucia para construir un knowledge graph dinámico (Neo4j) a partir de conversaciones con el usuario y combinar búsqueda vectorial (Milvus) con RAG (agente ReAct de LangGraph) para ofrecer respuestas personalizadas de chatbot. Ambos proyectos muestran el potencial de construir IA personalizada, aunque aún enfrentan desafíos como la optimización del rendimiento y la mejora en la naturalidad de las respuestas.
4 comentarios
Como es un LLM, no siempre está funcionando (T_T)... Úsenlo mucho y con confianza.
Por si alguien tiene curiosidad, voy a escribir las causas de los problemas de rendimiento que han surgido hasta ahora.
kwen inglés, pero a veces los extrae en coreano, lo que genera limitaciones en la búsquedakw, se mide la similitud para realizar búsqueda semántica, pero el rendimiento no es clarops) El rendimiento de delos-lucia es mejor que el de la web PoC. Si ejecutan delos-lucia en shell, probablemente verán mejores resultados.
ps) Ya cuando intenté crear el servicio directamente, vi que tanto el QA como introducir eval son difíciles. Parece que si el rendimiento del LLM fuera bueno se podría resolver de alguna manera, pero sentí que, aparte del modelo, hay muchas más horas de trabajo de las que esperaba en otras partes.
Hace poco vi un proyecto parecido, está interesante.
Voy a probarlo.
website : https://www.secondme.io/
Repositorio de GitHub : https://github.com/mindverse/Second-Me
Oh, qué proyecto tan interesante!! Gracias
¿Podría convertirse en una IA que me conozca mejor que yo mismo...?