6 पॉइंट द्वारा sungmin330 2025-05-08 | 4 टिप्पणियां | WhatsApp पर शेयर करें

TL;DR

पर्सनलाइज़्ड LLM Chat Agent। यह डायनामिक तरीके से यूज़र जानकारी इकट्ठा करता है और बाद में पर्सनलाइज़्ड जवाब देता है।

Q) मुझे आलू पसंद है

A) अच्छा

Q) मुझे क्या पसंद है?

A) तुम्हें आलू पसंद है~

डेमो लिंक: https://delosplatform.com
GitHub: https://github.com/sungminna/mcp_poc

ps) delos-lucia, velt service की फीचर्स को पैकेज करके बेहतर बनाया गया वर्ज़न है। delos-lucia छोटा response time, LLM streaming, और बेहतर async logic को सपोर्ट करता है।

साइन अप (लॉगिन) के बाद इसे तुरंत इस्तेमाल किया जा सकता है। रुचि और feedback का स्वागत है...

Lucia & Velt: पर्सनलाइज़्ड LLM चैट Agent

हाल के समय में LLM का उपयोग करके यूज़र के साथ इंटरैक्शन से मिली जानकारी को स्ट्रक्चर्ड रूप में बदलने और फिर उसी का उपयोग LLM के जवाबों में करके पर्सनलाइज़्ड अनुभव देने की कोशिशें बढ़ी हैं। Lucia और Velt इसी लक्ष्य को हासिल करने के लिए बने open source प्रोजेक्ट हैं। Lucia एक Python लाइब्रेरी है जो पर्सनलाइज़्ड LLM को लागू करने के लिए मुख्य AI फीचर्स को मॉड्यूलर रूप में उपलब्ध कराती है, जबकि Velt, Lucia की अवधारणाओं का उपयोग करके बनाया गया एक पर्सनलाइज़्ड RAG चैट सिस्टम है।

Lucia: पर्सनलाइज़्ड LLM मॉड्यूल

delos-lucia एक Python लाइब्रेरी है, जिसमें मूल रूप से Velt service के लिए विकसित किए गए मुख्य AI फीचर्स को दोबारा संरचित करके पैकेज किया गया है। इसकी मॉड्यूलर संरचना के कारण ज़रूरत के अनुसार फीचर्स चुनकर इस्तेमाल करना या उन्हें customize करना आसान है।

मुख्य फीचर्स:

  • व्यक्तिगत जानकारी और कीवर्ड extraction: LLM (जैसे OpenAI models) का उपयोग करके टेक्स्ट से यूज़र की पसंद, स्थिति आदि व्यक्तिगत जानकारी और मुख्य कीवर्ड्स की पहचान करके उन्हें निकाला जाता है।
  • Embedding generation: OpenAI के embedding models का उपयोग करके टेक्स्ट का vector representation (embedding) बनाया जाता है। बने हुए embeddings को Redis के जरिए cache किया जा सकता है, जिससे बार-बार होने वाली API call की लागत कम होती है।
  • डेटा स्टोरेज: निकाली गई structured जानकारी (व्यक्तिगत जानकारी, रिश्ते आदि) को graph database (Neo4j or Clickhouse) में स्टोर किया जाता है, और बने हुए vector embeddings को vector store (Milvus) में स्टोर किया जाता है, जिससे efficient search संभव होता है।
  • Pipeline उपलब्ध कराना: KnowledgePipeline (information extraction, embedding generation, storage तक का workflow) और SearchPipeline (keyword-based information search और context augmentation workflow) जैसे सामान्य कामों के लिए prebuilt pipelines उपलब्ध हैं, जिससे development आसान होता है।
  • Customization: plug-in architecture उपलब्ध है, जिसमें information/keyword extractors (Extractor), embedding clients (EmbeddingClient), information stores (InfoStore), vector stores (VectorStore) आदि को यूज़र अपने बनाए components से बदल सकता है।

Lucia, पर्सनलाइज़्ड AI application बनाने के लिए ज़रूरी core backend logic (information extraction, vectorization, storage, search) को abstract करके उपलब्ध कराती है, ताकि डेवलपर्स application logic पर ज़्यादा ध्यान दे सकें। (लाइसेंस: Apache-2.0)

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

Velt: Lucia components/अवधारणाओं का उपयोग करने वाला पर्सनलाइज़्ड RAG chatbot PoC

Velt, Lucia लाइब्रेरी में उपलब्ध अवधारणाओं का उपयोग करके बनाया गया FastAPI-आधारित backend application है। यह ReAct agent (LangGraph), Neo4j knowledge graph, Milvus vector store, PostgreSQL, और Redis को एकीकृत करके यूज़र को पर्सनलाइज़्ड RAG (Retrieval-Augmented Generation) chatbot अनुभव देने का लक्ष्य रखता है। यूज़र के साथ बातचीत के दौरान यह डायनामिक तरीके से personalized information को knowledge graph में बनाता है और फिर उसी का उपयोग करके अधिक relevant जवाब तैयार करता है।

मुख्य काम करने का तरीका:

  1. Knowledge graph बनाना:
    • यूज़र के साथ हुई बातचीत ("मुझे हैमबर्गर पसंद है") से LLM का उपयोग करके relation ((उपयोगकर्ता) --पसंद करता है--> (हैमबर्गर)) निकाला जाता है।
    • निकाली गई जानकारी Neo4j graph DB में nodes और edges के रूप में स्टोर की जाती है। इस समय (हैमबर्गर) --शामिल है--> (खाना) जैसी higher-level concept relations भी साथ में स्टोर की जाती हैं, जिससे flexible reasoning और search संभव होती है। ("मुझे कौन-सा खाना पसंद है?"), (lucia में इसके लिए थोड़ा अधिक efficient तरीका इस्तेमाल किया जाता है)
  2. RAG-आधारित जवाब तैयार करना:
    • यूज़र के सवाल ("क्या मुझे art पसंद है?") से LLM द्वारा keywords ("art", "पसंद करना") निकाले जाते हैं।
    • निकाले गए keywords का उपयोग करके Milvus में vector search के जरिए सबसे relevant जानकारी खोजी जाती है।
    • साथ ही Neo4j में उस यूज़र और keywords से जुड़े nodes और relations (direct relation, 1-2 hop relations, sub-concepts सहित) को खोजा जाता है।
    • Milvus और Neo4j से मिली जानकारी को context के रूप में जोड़कर LangGraph-आधारित ReAct agent के prompt को augment किया जाता है। (+ session conversation history)
    • agent इस augmented context के आधार पर यूज़र के सवाल का पर्सनलाइज़्ड जवाब तैयार करता है।

Tech stack:

  • Backend: FastAPI, Uvicorn, Python 3.13+
  • AI/LLM: LangChain, LangGraph, langchain-openai, OpenAI Embeddings
  • Database: Neo4j (Graph), Milvus (Vector), PostgreSQL (User/Chat Data), Redis (Cache)
  • अन्य: SQLAlchemy (Async), JWT (Auth), slowapi (Rate Limiting), Poetry, Docker
  • Frontend: SvelteKit (अलग velt/ directory)

मुख्य परिणाम और विचारणीय बिंदु:

  • संभावना की पुष्टि: LLM और graph/vector DB को जोड़कर डायनामिक पर्सनलाइज़्ड knowledge graph बनाना और उसके आधार पर hyper-personalized LLM service बनाना संभव है, यह दिखाया गया है।
  • Performance: अभी DB access (queries) वाले हिस्से में bottleneck देखा गया है, इसलिए optimization की ज़रूरत है। बड़े real-time environment में Neo4j performance का validation भी ज़रूरी है। (lucia में आंशिक रूप से हल किया गया)
  • जवाब की गुणवत्ता: LLM, retrieved information (context) के आधार पर जवाब देता है, लेकिन क्या वह हमेशा सबसे relevant और natural जवाब देता है, इसके लिए और validation व सुधार की ज़रूरत है। खासकर RAG लागू करने पर context पर अत्यधिक निर्भरता की वजह से अनैसर्गिक जवाब आने की प्रवृत्ति को सुधारना होगा।
  • Prompt engineering: कभी-कभी LLM instructions को ठीक से follow नहीं करता, इसलिए prompt सुधार और model performance issues की समीक्षा ज़रूरी है।
  • Scalability: अभी hardcoded DB queries को Text-to-Cypher/SQL आदि से बदलकर flexibility बढ़ाई जा सकती है। अगर users के बीच relationship analysis की ज़रूरत न हो, तो RDB-आधारित निर्माण की संभावना भी देखी जा सकती है। (lucia में Clickhouse उपयोग योग्य बनाने के लिए सुधार किया गया है)

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


सारांश:

Lucia, LLM-आधारित व्यक्तिगत जानकारी/कीवर्ड extraction, embedding, और graph/vector DB storage के लिए एक मॉड्यूलर Python लाइब्रेरी है। Velt, Lucia की अवधारणाओं का उपयोग करके यूज़र के साथ बातचीत से डायनामिक knowledge graph (Neo4j) बनाता है और vector search (Milvus) तथा RAG (LangGraph ReAct agent) को जोड़कर पर्सनलाइज़्ड chatbot responses देने वाला FastAPI-आधारित PoC है। दोनों प्रोजेक्ट personalized AI बनाने की संभावनाएँ दिखाते हैं, लेकिन performance optimization और जवाबों को अधिक natural बनाने जैसी चुनौतियाँ अभी बाकी हैं।

4 टिप्पणियां

 
sungmin330 2025-05-11

LLM होने की वजह से यह हमेशा स्थिर रूप से काम नहीं कर रहा है (T_T)... कृपया इसे आराम से खूब इस्तेमाल करें.
शायद कुछ लोग उत्सुक हों, इसलिए अब तक सामने आए performance issues के कारण लिख रहा/रही हूँ.

  • prompt में English में kw निकालने को कहा था, लेकिन कभी-कभी यह Korean में निकाल देता है, जिससे search पर पाबंदी आ जाती है
  • कभी-कभी उचित keywords निकाल नहीं पाता
  • kw को embedding करने के बाद similarity मापकर semantic search कर रहे हैं, लेकिन performance अभी भी स्पष्ट नहीं है

ps) PoC वेब की तुलना में delos-lucia की performance बेहतर है. अगर आप delos-lucia को shell-based तरीके से चलाकर देखें, तो शायद और बेहतर नतीजे मिलेंगे.

ps) जब खुद service बनाकर देखा, तो QA भी मुश्किल है और eval लागू करना भी आसान नहीं है. लगता है कि अगर सिर्फ LLM performance अच्छी हो तो किसी तरह हल निकल जाएगा, लेकिन महसूस हुआ कि model के अलावा दूसरे हिस्सों में भी उम्मीद से कहीं ज्यादा मेहनत लगती है.

 
1206good 2025-05-08

हाल ही में मैंने इसी तरह का एक प्रोजेक्ट देखा था, काफ़ी दिलचस्प है।
मैं इसे एक बार आज़माकर देखूंगा।

website : https://www.secondme.io/
Github repo : https://github.com/mindverse/Second-Me

 
sungmin330 2025-05-11

ओह, यह काफ़ी दिलचस्प प्रोजेक्ट है!! धन्यवाद

 
rlaehdus2003 2025-05-08

शायद यह ऐसा AI बन जाए जो मुझे मुझसे भी बेहतर जानता हो..?