PROJECT 06
RAG-система
семантического поиска
Полноценная RAG-система для загрузки документов, их векторизации и семантического поиска с оценкой релевантности. Поддерживает TXT и HTML, хранит эмбеддинги в ChromaDB.
// интерактивное демо поиска
Введите запрос для поиска по документам
// 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)
- Интерактивный режим для серии запросов