Contextual Retrieval
Bağlamsal getirme, her parçanın belgesinde nerede bulunduğunu açıklayan, LLM tarafından yazılmış bir notu parçanın başına ekler; böylece gömme vektörleri ve BM25 doğru bölümleri bulur.
Bağlamsal getirme, her belgenin tamamını okuyan bir büyük dil modelinin (LLM) her parçayı belge içinde konumlandıran, genellikle 50 ila 100 belirteçlik kısa bir not yazdığı, getirme destekli üretim (RAG) için kullanılan bir dizinleme tekniğidir. Parça gömülmeden ve anahtar kelime dizinine eklenmeden önce not parçanın başına eklenir; böylece arama, parçanın tek başına hiç belirtmediği bilgileri eşleştirebilir. Anthropic, bağlamsal getirmeyi 2024 Eylül'ünde tanıttı.
Çözdüğü Sorun#
RAG işlem hatları, belgeleri hassas vektör temsilleri oluşturmak ve bir modelin bağlam penceresine birden fazla parçayı sığdırmak için yeterince küçük parçalara böler; belgeden koparılan bir parça ise çoğu zaman bulunmasını sağlayan bilgileri kaybeder. Anthropic'in örneği, bir finansal bildirimden alınan şu parçadır: "Şirketin geliri önceki çeyreğe göre %3 arttı." Parçada ne şirketin adı ne de çeyrek belirtilir; bu nedenle ACME'nin 2023'ün 2. çeyreğindeki geliriyle ilgili bir soruyla eşleşecek hiçbir içerik yoktur; bu durum hem vektör gömmeleri hem de anahtar kelime araması için geçerlidir. Bağlamsal getirme parçayı şöyle saklar: "Bu parça, ACME şirketinin 2023'ün 2. çeyreğindeki performansıyla ilgili bir SEC bildiriminden alınmıştır; önceki çeyreğin geliri 314 milyon dolardı. Şirketin geliri önceki çeyreğe göre %3 arttı."
Nesne kırpmaları da metin parçaları gibi bağlamı kaybeder. Ultralytics'in nesne kırpma çözümü, görüntü veya videolarda YOLO26 çalıştırır ve her algılamayı crop_1.jpg, crop_2.jpg vb. biçiminde ayrı bir dosya olarak kaydeder; bu nedenle kırpmada bir kamyon görünür, ancak görüntünün hangi kameradan, tesisten veya sahneden geldiği anlaşılmaz. Her kırpmayı kamera adı, saat ve çevresinde algılanan diğer nesneler gibi kaynak kareyi açıklayan kısa bir önekle dizine eklemek, anahtar kelime ve anlamsal arama için bu bağlamı geri kazandırır.
Bağlamsal Erişim Nasıl Çalışır#
Her parça için LLM'ye belgenin tamamı ve parça verilir ve "parçanın arama amacıyla daha iyi bulunmasını sağlamak için onu genel belge içinde konumlandıran kısa ve öz bir bağlam yazması" istenir. Anthropic, her belgeyi yalnızca bir kez işleyip bu işlemi belgenin tüm parçaları için yeniden kullanan istem önbelleğe alma özelliğiyle Claude 3 Haiku'yu kullandı ve tek seferlik maliyeti milyon belge belirteci başına 1,02 dolar olarak belirtti. Bağlam eklenen parçalar bir gömme dizinine ("bağlamsal gömmeler") ve bir BM25 anahtar kelime dizinine ("bağlamsal BM25") eklenir. Sorgu sırasında her iki dizinde arama yapılır ve sonuçları karma aramada olduğu gibi birleştirilir; ardından bir yeniden sıralayıcı en iyi 150 adayı puanlar ve en iyi 20 parça isteme eklenir.
Örnek parçanın bağlamla ve bağlam olmadan gömülmesi, vektör aramasındaki etkiyi gösterir:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
# Anthropic's example chunk and the context an LLM wrote for it from the full filing
chunk = "The company's revenue grew by 3% over the previous quarter."
context = "This chunk is from an SEC filing on ACME corp's performance in Q2 2023; the previous quarter's revenue was $314 million."
other = "Globex Corporation reported that Q2 2023 revenue fell 2% on weaker demand."
query = "How did ACME's revenue change in Q2 2023?"
candidates = {"plain chunk": chunk, "contextual chunk": f"{context} {chunk}", "Globex chunk": other}
# Cosine similarity of the query to each indexed text
scores = model.similarity(model.encode(query), model.encode(list(candidates.values())))[0]
for name, score in zip(candidates, scores):
print(f"{name}: {score:.2f}")Düz parça, sorguyla 0,49 puan alır; bu, farklı bir şirket hakkındaki parçayla aynı puandır. Bağlam başına eklendiğindeyse parça 0,83 puan alır ve büyük farkla ilk sıraya yerleşir.
Bağlamsal Getirme ve İlgili Teknikler#
- Geç parçalara ayırma: Her parçanın gömmesine, gömme modelinin dikkati aracılığıyla belge bağlamı katar; parça başına LLM çağrısı yapmaz. Depolanan parça metni değişmeden kalır, dolayısıyla anahtar kelime araması bundan yarar sağlamaz.
- Anlamsal parçalara ayırma: Parçaların nerede başlayıp biteceğini belirler. Bağlamsal getirmeyle birlikte kullanılır; bağlamsal getirme, her parçanın belirtmeden bıraktığı bilgileri tamamlar.
- Başlık ve bölüm başlığı önekleri: Her parçanın başına aynı belge başlığını veya bölüm başlığını eklemeye dayanan daha ucuz ve eski yöntem. Bağlamsal getirme, her parça için farklı bir not yazar.
- Bağlam mühendisliği: Çıkarım sırasında bir modelin bağlam penceresine nelerin gireceğine karar verme pratiğinin genel adıdır. Bağlamsal getirme, indekslenen içerik üzerinde bir adım daha önce çalışır.
Ölçülen Kazanımlar#
Anthropic, getirme başarısızlığını 1 eksi recall@20 olarak ölçtü; bu, ilgili parçanın ilk 20 sonuçta bulunmadığı sorguların oranıdır. Temel işlem hattı sorguların %5,7'sinde başarısız oldu. Bağlamsal gömmeler bu oranı %3,7'ye, yani %35 düşüşe indirdi; bağlamsal BM25'in eklenmesiyle oran %2,9'a, yani %49 düşüşe indi. Birleşik sonuçların yeniden sıralanması, başarısızlık oranını başlangıca göre %67 düşüşle %1,9'a getirdi.










