0Pricing
AI Agents · Lekcja

Indeksowanie zbioru dokumentów

Utwórz embedding każdego fragmentu i zapisz wektory w indeksie — to etap przygotowania offline każdego systemu RAG.

Indeksowanie zbioru dokumentów to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Potok ingestii

Proces RAG wykonywany offline składa się z czterech etapów:

  1. Wczytaj dokumenty (PDF, HTML, MD)
  2. Podziel na fragmenty każdy dokument
  3. Utwórz osadzenia dla każdego fragmentu
  4. Zapisz wektory i metadane w indeksie

Krok 1: Wczytaj dokumenty

Używaj wyspecjalizowanych loaderów dla różnych formatów:

# 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()

Krok 2: Podziel na fragmenty

Użyj splittera z poprzedniej lekcji:

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

Krok 3: Twórz osadzenia partiami

Twórz osadzenia dla wielu fragmentów w jednym wywołaniu API:

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

Krok 4: Zapisz

Dla 10–50 tys. fragmentów wystarczy FAISS lub Chroma:

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))]
)

Idempotentna ingestia

Zadbaj o bezpieczne ponowne uruchamianie ingestii. Używaj deterministycznych identyfikatorów (haszy treści), aby ponowne uruchomienie nie powodowało duplikatów:

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.'))

Aktualizacje przyrostowe

Gdy dokument się zmieni:

  1. Oblicz nowe fragmenty
  2. Porównaj je z istniejącymi identyfikatorami
  3. Usuń usunięte, dodaj nowe, pozostaw niezmienione

Naiwne podejście (usunięcie wszystkich danych i ponowne wstawienie) sprawdza się w przypadku małych korpusów, ale marnuje wywołania API do tworzenia osadzeń.

Metadane do filtrowania

Uwzględnij każde pole, według którego możesz chcieć filtrować w przyszłości:

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}")

Postęp i punkty kontrolne

W przypadku dużych procesów ingestii rejestruj postęp i twórz punkty kontrolne:

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

Limity szybkości

Limity szybkości dla osadzeń OpenAI są wysokie, ale istnieją. Używaj semaforów lub ponawiania prób za pomocą `tenacity`:

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(...)

Kontrola poprawności indeksu

Po ingestii wykonaj kilka testowych zapytań i ręcznie sprawdź wyniki. Jeśli nie pojawia się nic istotnego, podział na fragmenty lub tworzenie osadzeń nie działa poprawnie — wykryj problem, zanim zrobią to użytkownicy.

Wersjonowanie indeksu

Wersjonuj indeks, aby móc przełączyć się na nowy sposób dzielenia na fragmenty lub nowy model osadzeń bez przestoju:

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

Idempotentne identyfikatory

Dlaczego używać hashy treści jako identyfikatorów fragmentów?

Podsumowanie

Wczytaj → podziel na fragmenty → utwórz osadzenia → zapisz, używając idempotentnych identyfikatorów i metadanych. Indeks jest fundamentem każdego kolejnego etapu wyszukiwania.

Często zadawane pytania

Czy lekcja „Indeksowanie zbioru dokumentów” jest bezpłatna?

Tak — pełny tekst „Indeksowanie zbioru dokumentów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „Indeksowanie zbioru dokumentów”?

Utwórz embedding każdego fragmentu i zapisz wektory w indeksie — to etap przygotowania offline każdego systemu RAG. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Indeksowanie zbioru dokumentów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Co rozwiązuje RAG (odcięcie wiedzy, halucynacje)
  2. Strategie dzielenia na fragmenty (stałe, zdaniowe, semantyczne)
  3. Indeksowanie zbioru dokumentów
  4. Budowanie prostego RAG z FAISS lub Chroma
← Powrót do AI Agents