← Назад к портфолио

PROJECT 06

RAG-система
семантического поиска

Полноценная RAG-система для загрузки документов, их векторизации и семантического поиска с оценкой релевантности. Поддерживает TXT и HTML, хранит эмбеддинги в ChromaDB.

Python ChromaDB OpenAI Embeddings Semantic Search RAG TXT / HTML Loaders
// интерактивное демо поиска
Введите запрос для поиска по документам
// pipeline загрузки и поиска

INGEST

TXT/HTML файлыdata/
Chunkersplit by size
OpenAI Embeddingstext-embedding-3
ChromaDBpersist to disk

SEARCH

Запросquery string
Embed Querysame model
ChromaDB ANNtop-k search
Results+ relevance score
// ключевой код
search.py — поиск с фильтрацией
def search_documents(query, n_results=5, filter_type=None):
    client = ChromaDBClient(persist_directory="./chroma_db")
    client.get_or_create_collection()

    # Фильтр по типу документа (txt / html)
    where = {"type": filter_type} if filter_type else None

    results = client.search(
        query=query,
        n_results=n_results,
        where=where
    )
    # Каждый результат: document, metadata, distance
    # relevance = 1 - distance  (чем ближе к 1 — тем лучше)
    for doc, meta, dist in zip(
        results['documents'][0],
        results['metadatas'][0],
        results['distances'][0]
    ):
        relevance = 1 - dist
        print(f"{meta['source']} · релевантность: {relevance:.4f}")
// что умеет

ЗАГРУЗКА

  • TXT-загрузчик с чисткой пустых строк
  • HTML-загрузчик с извлечением текста
  • Чанкинг с метаданными (source, chunk_id, total)
  • Дедупликация по ID документа

ПОИСК

  • Семантический поиск по смыслу, не по ключевым словам
  • Фильтрация по типу: txt или html
  • Оценка релевантности (1 − distance)
  • Интерактивный режим для серии запросов