Menggunakan Langfuse untuk Melacak Kueri di RAG
Ini adalah buku resep sederhana yang mendemonstrasikan cara menggunakan Langfuse untuk melacak kueri Anda di RAG. Pipeline RAG diimplementasikan dengan LlamaIndex dan Milvus Lite untuk menyimpan dan mengambil dokumen.
Dalam tutorial singkat ini, kami akan menunjukkan kepada Anda cara menyiapkan aplikasi LlamaIndex menggunakan Milvus Lite sebagai penyimpan vektor. Kami juga akan menunjukkan kepada Anda cara menggunakan integrasi Langfuse LlamaIndex untuk melacak aplikasi Anda.
Langfuse adalah platform rekayasa LLM sumber terbuka yang membantu tim secara kolaboratif men-debug, menganalisis, dan mengulang aplikasi LLM mereka. Semua fitur platform terintegrasi secara native untuk mempercepat alur kerja pengembangan.
Milvus Lite adalah versi ringan dari Milvus, database vektor sumber terbuka yang mendukung aplikasi AI dengan penyematan vektor dan pencarian kemiripan.
Penyiapan
Pastikan Anda telah menginstal llama-index
dan langfuse
.
$ pip install llama-index langfuse llama-index-vector-stores-milvus --upgrade
Inisialisasi integrasi. Dapatkan kunci API Anda dari pengaturan proyek Langfuse, dan ganti public_key secret_key dengan nilai kunci Anda. Contoh ini menggunakan OpenAI untuk penyematan dan penyelesaian obrolan, sehingga Anda juga perlu menentukan kunci OpenAI Anda di variabel lingkungan.
import os
# Get keys for your project from the project settings page
# https://cloud.langfuse.com
os.environ["LANGFUSE_PUBLIC_KEY"] = ""
os.environ["LANGFUSE_SECRET_KEY"] = ""
os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com" # 🇪🇺 EU region
# os.environ["LANGFUSE_HOST"] = "https://us.cloud.langfuse.com" # 🇺🇸 US region
# Your openai key
os.environ["OPENAI_API_KEY"] = ""
from llama_index.core import Settings
from llama_index.core.callbacks import CallbackManager
from langfuse.llama_index import LlamaIndexCallbackHandler
langfuse_callback_handler = LlamaIndexCallbackHandler()
Settings.callback_manager = CallbackManager([langfuse_callback_handler])
Mengindeks menggunakan Milvus Lite
from llama_index.core import Document
doc1 = Document(text="""
Maxwell "Max" Silverstein, a lauded movie director, screenwriter, and producer, was born on October 25, 1978, in Boston, Massachusetts. A film enthusiast from a young age, his journey began with home movies shot on a Super 8 camera. His passion led him to the University of Southern California (USC), majoring in Film Production. Eventually, he started his career as an assistant director at Paramount Pictures. Silverstein's directorial debut, “Doors Unseen,” a psychological thriller, earned him recognition at the Sundance Film Festival and marked the beginning of a successful directing career.
""")
doc2 = Document(text="""
Throughout his career, Silverstein has been celebrated for his diverse range of filmography and unique narrative technique. He masterfully blends suspense, human emotion, and subtle humor in his storylines. Among his notable works are "Fleeting Echoes," "Halcyon Dusk," and the Academy Award-winning sci-fi epic, "Event Horizon's Brink." His contribution to cinema revolves around examining human nature, the complexity of relationships, and probing reality and perception. Off-camera, he is a dedicated philanthropist living in Los Angeles with his wife and two children.
""")
# Example index construction + LLM query
from llama_index.core import VectorStoreIndex
from llama_index.core import StorageContext
from llama_index.vector_stores.milvus import MilvusVectorStore
vector_store = MilvusVectorStore(
uri="tmp/milvus_demo.db", dim=1536, overwrite=False
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
[doc1,doc2], storage_context=storage_context
)
Kueri
# Query
response = index.as_query_engine().query("What did he do growing up?")
print(response)
# Chat
response = index.as_chat_engine().chat("What did he do growing up?")
print(response)
Jelajahi jejak di Langfuse
# As we want to immediately see result in Langfuse, we need to flush the callback handler
langfuse_callback_handler.flush()
Selesai! ✨ Anda melihat jejak indeks dan kueri Anda di proyek Langfuse Anda.
Contoh jejak (tautan publik):
Jejak di Langfuse:
Jejak Langfuse
Tertarik dengan fitur yang lebih canggih?
Lihat dokumen integrasi lengkap untuk mempelajari lebih lanjut tentang fitur-fitur canggih dan cara menggunakannya:
- Interoperabilitas dengan Langfuse Python SDK dan integrasi lainnya
- Menambahkan metadata dan atribut khusus ke jejak