0Pricing
AI Agents · Ders

Belge Kümesini Dizinleme

Her parçayı gömüntüleyin ve vektörleri bir dizinde saklayın; bu, her RAG sisteminin çevrimdışı hazırlık adımıdır.

Belge Kümesini Dizinleme, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Veri Alma İşlem Hattı

Çevrim dışı RAG işlem hattı dört adımdan oluşur:

  1. Belgeleri yükleyin (PDF, HTML, MD)
  2. Her belgeyi parçalara ayırın
  3. Her parçayı gömün
  4. Vektörleri ve üst verileri bir dizinde saklayın

1. Adım: Belgeleri Yükleme

Farklı biçimler için uzmanlaşmış yükleyiciler kullanın:

# PDFs
from pypdf import PdfReader
text = ''
for page in PdfReader('doc.pdf').pages:
    text += page.extract_text()

# HTML
from bs4 import BeautifulSoup
text = BeautifulSoup(html, 'html.parser').get_text()

# Markdown — just read the file
text = open('doc.md').read()

2. Adım: Parçalama

Önceki dersteki bölücüyü kullanın:

from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
chunks = splitter.split_text(text)

3. Adım: Toplu Gömme

Her uygulama programlama arayüzü çağrısında çok sayıda parçayı gömün:

from openai import OpenAI
client = OpenAI()

def embed_batch(texts, batch_size=100):
    vectors = []
    for i in range(0, len(texts), batch_size):
        batch = texts[i:i + batch_size]
        resp = client.embeddings.create(model='text-embedding-3-small', input=batch)
        vectors.extend(d.embedding for d in resp.data)
    return vectors

4. Adım: Saklama

10 bin-50 bin parça için FAISS veya Chroma yeterlidir:

import chromadb
client = chromadb.Client()
collection = client.create_collection('docs')

collection.add(
    ids=[f'doc-{i}' for i in range(len(chunks))],
    embeddings=vectors,
    documents=chunks,
    metadatas=[{'source': 'doc.pdf', 'page': i} for i in range(len(chunks))]
)

İdempotent Veri Alma

Veri alma işlemini yeniden çalıştırılabilir hâle getirin. Belirlenimci kimlikler (içeriğin karma değerini) kullanın; böylece işlemi yeniden çalıştırmak yinelenen kayıtlar oluşturmaz:

import hashlib

def chunk_id(source, text):
    h = hashlib.sha256(text.encode()).hexdigest()[:16]
    return f'{source}:{h}'

print(chunk_id('handbook.pdf', 'Employees get 20 vacation days per year.'))
print(chunk_id('handbook.pdf', 'Employees get 20 vacation days per year.'))

Artımlı Güncellemeler

Bir belge değiştiğinde:

  1. Yeni parçaları hesaplayın
  2. Mevcut kimliklerle farklarını bulun
  3. Silinenleri kaldırın, yenileri ekleyin, değişmeyenleri koruyun

Basit yaklaşım (tümünü silip yeniden eklemek), küçük derlemler için uygundur; ancak gömme API çağrılarını boşa harcar.

Filtreleme İçin Üst Veri

Daha sonra filtrelemek isteyebileceğiniz tüm alanları ekleyin:

metadata = {
    'source': '/docs/handbook.pdf',
    'page': 42,
    'department': 'engineering',
    'updated_at': '2024-08-12',
    'access_level': 'internal'
}
for k, v in metadata.items():
    print(f"{k}: {v}")

İlerleme Durumu ve Denetim Noktaları

Büyük veri alma işlemlerinde ilerlemeyi günlüğe kaydedin ve denetim noktaları oluşturun:

for i, batch in enumerate(batches):
    embed_and_store(batch)
    if i % 10 == 0:
        save_checkpoint(i)
        print(f'Processed {i * 100} chunks')

Oran Sınırları

OpenAI gömme işlemlerinde yüksek, ancak gerçek bir oran sınırı vardır. `tenacity` yeniden denemeleriyle birlikte semaforlar kullanın:

from asyncio import Semaphore
sem = Semaphore(10)  # 10 concurrent embed calls max

async def safe_embed(batch):
    async with sem:
        return await client.embeddings.create(...)

Dizini Sağlama Denetiminden Geçirme

Veri alma işleminden sonra birkaç deneme sorgusu çalıştırın ve sonuçları elle inceleyin. İlgili hiçbir sonuç çıkmıyorsa parçalama veya gömme işleminiz bozuktur — kullanıcılar fark etmeden önce sorunu bulun.

Dizini Sürümlendirme

Yeni bir parçalama veya gömme modeline kesinti olmadan geçebilmek için dizini sürümlendirin:

collection = client.create_collection(f'docs-v2-{date.today()}')
# old collection stays live until new one is validated

İdempotent Kimlikler

Parça kimlikleri olarak içerik karmalarını neden kullanmalısınız?

Özet

İdempotent kimlikler ve üst veriyle yükleyin -> parçalara ayırın -> gömün -> saklayın. Dizin, sonraki tüm getirme adımlarının temelidir.

Sıkça Sorulan Sorular

“Belge Kümesini Dizinleme” dersi ücretsiz mi?

Evet — “Belge Kümesini Dizinleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Belge Kümesini Dizinleme” dersinde ne öğreneceğim?

Her parçayı gömüntüleyin ve vektörleri bir dizinde saklayın; bu, her RAG sisteminin çevrimdışı hazırlık adımıdır. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Belge Kümesini Dizinleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. RAG Ne İşe Yarar (Bilgi Kesim Tarihi, Halüsinasyonlar)
  2. Parçalama Stratejileri (Sabit, Cümle, Anlamsal)
  3. Belge Kümesini Dizinleme
  4. FAISS veya Chroma ile Naif RAG Oluşturma
← AI Agents Sayfasına Dön