6 poin oleh sungmin330 2025-05-08 | 4 komentar | Bagikan ke WhatsApp

TL;DR

LLM Chat Agent yang dipersonalisasi. Mengumpulkan informasi pengguna secara dinamis dan kemudian memberikan jawaban yang dipersonalisasi.

Q) Saya suka kentang

A) Oke

Q) Apa yang saya suka?

A) Kamu suka kentang~

Link demo: https://delosplatform.com
GitHub: https://github.com/sungminna/mcp_poc

ps) delos-lucia adalah versi yang memaketkan dan meningkatkan fungsionalitas layanan velt. delos-lucia mendukung response time yang singkat, LLM streaming, dan logika asynchronous yang ditingkatkan.

Bisa langsung digunakan setelah mendaftar (login). Mohon banyak minat dan feedback-nya...

Lucia & Velt: Agent chat LLM yang dipersonalisasi

Belakangan ini, makin banyak upaya untuk menggunakan LLM guna menstrukturkan informasi yang diperoleh melalui interaksi dengan pengguna, lalu memanfaatkannya kembali dalam jawaban LLM untuk memberikan pengalaman yang dipersonalisasi. Lucia dan Velt adalah proyek open source untuk mencapai tujuan tersebut. Lucia adalah library Python yang memodularisasi fungsi AI inti untuk mewujudkan LLM yang dipersonalisasi, sedangkan Velt adalah sistem chat RAG yang dipersonalisasi dan dibangun dengan memanfaatkan konsep Lucia.

Lucia: Modul LLM yang dipersonalisasi

delos-lucia adalah library Python yang memaketkan ulang fungsi AI inti yang awalnya dikembangkan untuk layanan Velt. Karena disusun secara modular, fitur yang dibutuhkan dapat digunakan secara selektif atau dikustomisasi dengan mudah.

Fitur utama:

  • Ekstraksi informasi pribadi dan kata kunci: Menggunakan LLM (seperti model OpenAI) untuk mengidentifikasi dan mengekstrak informasi pribadi pengguna, seperti preferensi dan status, serta kata kunci inti dari teks.
  • Pembuatan embedding: Menggunakan model embedding OpenAI untuk membuat representasi vektor (embedding) dari teks. Embedding yang dihasilkan dapat di-cache melalui Redis untuk mengurangi biaya panggilan API yang berulang.
  • Penyimpanan data: Informasi terstruktur yang diekstrak (informasi pribadi, relasi, dan sebagainya) disimpan di graph database (Neo4j or Clickhouse), sedangkan embedding vektor yang dihasilkan disimpan di vector store (Milvus) untuk mendukung pencarian yang efisien.
  • Penyediaan pipeline: Menyediakan pipeline siap pakai untuk tugas umum seperti KnowledgePipeline (workflow dari ekstraksi informasi, pembuatan embedding, hingga penyimpanan) dan SearchPipeline (workflow pencarian informasi berbasis kata kunci dan augmentasi konteks), sehingga meningkatkan kenyamanan pengembangan.
  • Kustomisasi: Menyediakan arsitektur plug-in yang memungkinkan pengguna mengganti komponen seperti extractor informasi/kata kunci (Extractor), embedding client (EmbeddingClient), info store (InfoStore), dan vector store (VectorStore) dengan komponen yang diimplementasikan sendiri.

Lucia membantu developer lebih fokus pada logika aplikasi dengan mengabstraksikan logika backend inti yang diperlukan untuk membangun aplikasi AI yang dipersonalisasi (ekstraksi informasi, vektorisasi, penyimpanan, pencarian). (Lisensi: Apache-2.0)

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

Velt: PoC chatbot RAG yang dipersonalisasi dengan memanfaatkan komponen/konsep Lucia

Velt adalah aplikasi backend berbasis FastAPI yang dibangun dengan memanfaatkan konsep-konsep yang disediakan library Lucia. Dengan mengintegrasikan agen ReAct (LangGraph), knowledge graph Neo4j, vector store Milvus, PostgreSQL, dan Redis, proyek ini bertujuan memberikan pengalaman chatbot RAG (Retrieval-Augmented Generation) yang dipersonalisasi kepada pengguna. Melalui percakapan dengan pengguna, sistem membangun informasi personal secara dinamis ke dalam knowledge graph, lalu memanfaatkannya untuk menghasilkan jawaban yang lebih relevan.

Cara kerja inti:

  1. Membangun knowledge graph:
    • Dari percakapan dengan pengguna ("Saya suka hamburger"), sistem menggunakan LLM untuk mengekstrak relasi ((pengguna) --menyukai--> (hamburger)).
    • Informasi yang diekstrak disimpan sebagai node dan edge di graph DB Neo4j. Pada saat yang sama, relasi konsep tingkat atas seperti (hamburger) --termasuk--> (makanan) juga disimpan agar inferensi dan pencarian lebih fleksibel. ("Makanan apa yang saya sukai?"), (di Lucia digunakan cara yang sedikit lebih efisien)
  2. Pembuatan jawaban berbasis RAG:
    • Dari pertanyaan pengguna ("Apakah saya suka seni?"), sistem mengekstrak kata kunci seperti "seni" dan "suka" menggunakan LLM.
    • Dengan kata kunci yang diekstrak, sistem mencari informasi yang sangat relevan di Milvus melalui pencarian vektor.
    • Secara bersamaan, sistem menelusuri node dan relasi yang terhubung dengan pengguna dan kata kunci tersebut di Neo4j (relasi langsung, relasi 1-2 hop, termasuk konsep turunan).
    • Informasi yang ditemukan dari Milvus dan Neo4j digabungkan sebagai konteks untuk meng-augment prompt agen ReAct berbasis LangGraph. (+ riwayat percakapan sesi)
    • Berdasarkan konteks yang telah di-augment ini, agen menghasilkan jawaban yang dipersonalisasi untuk pertanyaan pengguna.

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)
  • Lainnya: SQLAlchemy (Async), JWT (Auth), slowapi (Rate Limiting), Poetry, Docker
  • Frontend: SvelteKit (direktori velt/ terpisah)

Hasil utama dan hal yang perlu dipertimbangkan:

  • Validasi kemungkinan: Mengonfirmasi kemungkinan membangun knowledge graph yang dipersonalisasi secara dinamis dengan menggabungkan LLM dan graph/vector DB, serta mewujudkan layanan LLM yang sangat dipersonalisasi dengan memanfaatkannya.
  • Performa: Saat ini bottleneck teramati pada bagian akses DB (query), sehingga perlu optimasi. Performa Neo4j di lingkungan real-time skala besar juga perlu divalidasi. (sebagian telah diatasi di lucia)
  • Kualitas jawaban: Walau LLM menjawab berdasarkan informasi (konteks) yang ditemukan, masih perlu validasi dan peningkatan lebih lanjut apakah sistem selalu memberikan jawaban yang paling relevan dan alami. Khususnya saat menerapkan RAG, perlu mengatasi kecenderungan jawaban menjadi tidak alami karena terlalu bergantung pada konteks.
  • Prompt engineering: Karena LLM kadang tidak mengikuti instruction, perlu perbaikan prompt dan peninjauan isu performa model.
  • Skalabilitas: Query DB yang saat ini masih hardcoded dapat diganti dengan Text-to-Cypher/SQL dan sejenisnya untuk meningkatkan fleksibilitas. Jika tidak ada analisis relasi antar pengguna, kemungkinan membangun sistem berbasis RDB juga bisa dipertimbangkan. (di lucia telah ditingkatkan agar dapat menggunakan clickhouse)

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


Ringkasan:

Lucia adalah library Python modular untuk ekstraksi informasi pribadi/kata kunci berbasis LLM, embedding, dan penyimpanan ke graph/vector DB. Velt adalah PoC berbasis FastAPI yang memanfaatkan konsep Lucia untuk membangun knowledge graph dinamis (Neo4j) dari percakapan dengan pengguna, lalu menggabungkan pencarian vektor (Milvus) dan RAG (agen ReAct LangGraph) guna memberikan respons chatbot yang dipersonalisasi. Kedua proyek ini menunjukkan potensi pembangunan AI yang dipersonalisasi, tetapi masih memiliki tantangan seperti optimasi performa dan peningkatan kealamian jawaban.

4 komentar

 
sungmin330 2025-05-11

Karena ini LLM, jadi tidak selalu berjalan terus-menerus (T_T)... mohon digunakan dengan santai dan sesering mungkin.
Kalau-kalau ada yang penasaran,,, saya coba tulis penyebab isu performa yang muncul sejauh ini

  • Saya menulis prompt agar mengekstrak kw dalam bahasa Inggris, tetapi kadang diekstrak dalam bahasa Korea sehingga pencarian jadi terbatas
  • Ada kalanya kata kunci yang tepat tidak berhasil diekstrak
  • Setelah kw di-embedding lalu dilakukan pengukuran kemiripan untuk pencarian semantik, tetapi performanya masih belum jelas

ps) Performa delos-lucia lebih baik daripada web PoC. Kalau Anda menjalankan delos-lucia berbasis shell, kemungkinan Anda akan melihat hasil yang lebih baik.

ps) Setelah benar-benar membuat servicenya sendiri, ternyata QA juga sulit dan menerapkan eval pun tidak mudah. Rasanya kalau performa LLM saja bagus mungkin semuanya bisa teratasi, tetapi saya jadi merasa bahwa di luar model ada jauh lebih banyak pekerjaan yang dibutuhkan daripada yang saya kira.

 
1206good 2025-05-08

Saya baru-baru ini melihat proyek serupa, dan ini menarik.
Saya akan mencobanya.

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

 
sungmin330 2025-05-11

Oh, ini proyek yang menarik sekali!! Terima kasih

 
rlaehdus2003 2025-05-08

AI yang mungkin akan mengenal saya lebih baik daripada diri saya sendiri..?