LlamaIndex
LlamaIndex, LLM'ler için özel verileri yükleyen, dizinleyen ve getiren; RAG işlem hatlarına ve belge aracılarına güç veren açık kaynaklı bir çatıdır.
LlamaIndex, büyük dil modellerini (LLM'ler) özel verilere bağlamaya yönelik açık kaynaklı bir çerçevedir: belgeleri, veritabanlarını ve API'leri yükler, içeriklerini dizinler ve bir modelin soruyu yanıtlamak için ihtiyaç duyduğu bölümleri getirir. Bu çerçeveyle oluşturulan uygulamaların çoğu, şirket kılavuzlarından, sözleşmelerinden veya destek taleplerinden yanıt veren asistanlar ve belgeleri okuyup işleyen YZ ajanları gibi getirim destekli üretim kullanır. Jerry Liu, projeyi Kasım 2022'de GPT Index adıyla yayımladı ve Şubat 2023'te adını LlamaIndex olarak değiştirdi. LlamaIndex çerçevesi Python ve TypeScript'te kullanılabilir; şirket ayrıca karmaşık PDF'leri, tabloları ve slaytları dizinlemeye uygun metne dönüştüren barındırılan bir hizmet olan LlamaParse'i de sunar.
LlamaIndex Nasıl Çalışır#
Bir LlamaIndex uygulaması iki aşamadan oluşur. Veri alma, her veri güncellemesinde bir kez çalışır: LlamaHub bağlayıcıları dosya ve hizmetleri Document nesneleri olarak yükler, bir düğüm ayrıştırıcısı bunların her birini Node adı verilen parçalara böler ve bir gömme modeli her Node'u bir vektöre, yani dizinde saklanan gömme vektörüne dönüştürür. Sorgulama her soru için çalışır: Bir getirici soruya en yakın Node'ları bulur; yeniden sıralayıcı gibi son işlemciler bunları yeniden sıralar veya filtreler; yanıt sentezleyici de kalanları, yanıtın bu içeriklere dayanmasını söyleyen talimatlarla birlikte LLM'nin bağlam penceresine yerleştirir.
VectorStoreIndex, varsayılan dizin türüdür ve gömme vektörlerini bellekte veya harici bir vektör veritabanında saklar. Diğer dizin türleri her parçayı özetleme için modele gönderir, GraphRAG tarzı sorgular için varlık ve ilişkilerden oluşan bir bilgi grafiği kurar veya anahtar sözcükleri eşleştirir. Sorgu motoru tek bir soruyu yanıtlar, sohbet motoru konuşmayı sürdürür; LlamaIndex'in olay tabanlı orkestrasyon katmanı olan Workflows ise getirim, araçlar ve birkaç ajanı birbirine bağlayarak neyin ne zaman aranacağına karar veren ajan tabanlı RAG sistemleri oluşturur.
Görüntüleri İçeriklerine Göre Dizinleme#
Getirim, metin olarak yazılabilen her tür içerik üzerinde çalışır. Ultralytics YOLO26 modelini bir fotoğraf koleksiyonunda çalıştırmak, her görüntüyü aranabilir bir açıklamaya dönüştürür: Results.verbose(), bir tahmin modu sonucundaki sınıf başına sayıları kısa bir metin olarak verir. Bu metin, üst verisinde görüntü URL'sini saklayan bir Document haline gelir. Yerel bir Hugging Face gömme modeli sayesinde dizin, API anahtarı olmadan çalışır:
from llama_index.core import Document, Settings, VectorStoreIndex
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from ultralytics import YOLO
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
model = YOLO("yolo26n.pt")
# Describe each image by its detections; the URL stays in metadata and out of the embedding
docs = []
for url in ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]:
results = model(url)
text = f"A photo containing {results[0].verbose()}"
docs.append(Document(text=text, metadata={"image": url}, excluded_embed_metadata_keys=["image"]))
# Index the descriptions, then retrieve the image that best matches a question
index = VectorStoreIndex.from_documents(docs)
retriever = index.as_retriever(similarity_top_k=1)
nodes = retriever.retrieve("Which photo shows a bus?")
print(nodes[0].node.metadata["image"], round(nodes[0].score, 3))Getirici, algılayıcının açıklaması sayesinde dosya adı yerine bulunan kosinüs benzerliği puanıyla birlikte otobüs görüntüsünü döndürür. Üzerine bir yanıt sentezleyici eklemek, koleksiyonla ilgili soruları metin biçiminde yanıtlar. Bu, bilgisayarlı görüyü belge aramayla birleştiren çok modlu RAG sistemlerinin temelindeki yaklaşımdır.
LlamaIndex ve İlgili Araçlar#
- LangChain: Çok sayıda entegrasyon içeren, LLM uygulamaları ve ajanları için genel amaçlı bir çerçevedir. Her iki proje de artık getirim ve ajan özelliklerini kapsıyor; LlamaIndex veri alma, ayrıştırma ve dizin türleri konusunda daha derindir. Ekipler de çoğu zaman LangChain veya LangGraph ajanlarının içinde LlamaIndex getiricilerini kullanır.
- Vektör veritabanları: Vektörleri depolar ve vektör araması yapar. LlamaIndex bunların üzerinde çalışarak belgelerin nasıl ayrıştırılacağına, parçalara bölüneceğine, gömme vektörlerine dönüştürüleceğine, getirileceğine ve modele aktarılacağına karar verir; arka uç olarak onlarca vektör deposunu destekler.
- Anlamsal arama: Tek başına getirim adımıdır. LlamaIndex buna üretim de ekler; böylece sonuçlar, kaynak gösterimi için iliştirilmiş kaynak Node'larıyla birlikte yanıt olarak sunulur.










