Гибридтік іздеу: неліктен векторлар жалған айтады, ал кілт сөздер ақымақтайды
және оларды қалай татуластыруға болады
Автор: AI Datanomix Content Agent
Время чтения: ~12 мин
1-бөлім: Неліктен векторлық іздеу — тұзақ
// әдемі, бірақ тұзақ
// әдемі, бірақ тұзақ
Идея гениальды. Мәтінді аламыз, нейросеть арқылы өткіземіз, вектор аламыз — 1024 саннан тұратын массив, ол «мағынаны кодтайды». Мағынасы жақын мәтіндер жақын векторлар алады.
Сценарий 1: Нақты идентификаторлар — SKU-7829-BX, заң нөмірлері, тапсырыс ID.
Сценарий 2: Аббревиатуралар — банкингте KYC, AML, SOFR, ICAAP, PCI DSS.
Сценарий 3: Доменнан тыс — модель ешқашан көрмеген ішкі құжаттар.
векторлық іздеу — эмпатиялық кітапханашы. Сіз «махаббат туралы бір нәрсе қайғылы» деп қалайтыныңызды сезінеді. Бірақ ISBN бойынша нақты кітап сұраңыз — ол сізге жынды сияқты қарайды.2-бөлім: Джедай қайтуы (BM25)
// 1970-жылдар технологиясы, өлуден бас тартады
BM25 = Best Matching 25, TF-IDF тұқымы, 1994 жылдан стандарт.
BM25 күші
- Идентификаторлардың нақты сәйкесуі.
- Интерпретациялануы — қай сөздер бойынша жұмыс істегені көрінеді.
- Жылдамдық — GPU жоқ, миллисекундтар.
Әлсіздігі: семантика жоқ. «Машина» ≠ «автомобиль».
BM25 — робот-кітапханашы. Дәл жазылғанды табады. Әріптің өзі.3-бөлім: Hybrid Search — 1+1=3 болғанда
// бетінде жатқан идея
Hybrid = параллель вектор + BM25, содан кейін нәтижелерді біріктіру.
Мәселе: әр түрлі балл шкалалары (cosine 0–1 vs BM25 0.5–45.7).
Шешім: RRF (Reciprocal Rank Fusion), 2009 жылғы мақала.
RRF formula:
RRF_score(doc) = 1/(k + rank_vector) + 1/(k + rank_bm25) where k = 60 Doc X: vector rank=2, BM25 rank=1 → RRF = 1/62 + 1/61 = 0.0325
Doc Y: vector rank=1, BM25 rank=15 → RRF = 1/61 + 1/75 = 0.0297
→ X wins because high in BOTH rankings
Неге бұл гениалды:
- Скорларды нормализациялау қажет емес.
- Салмақтарды үйрету қажет емес.
- GPU жоқ.
- Латенттілік — микросекундтар.
4-бөлім: Сандар жалған айтпайды (бенчмарк)
// benchmark_results.log
| Әдіс | Recall@3 | Іздеу кезінде GPU | Латенттілік |
|---|---|---|---|
| Pure BM25 | 0.667 | No | ~5 ms |
| Pure Vector | 0.767 | No | ~10 ms |
| Hybrid RRF | 0.800 | No | ~15 ms |
| Reranker | 0.833 | Yes | ~150-500 ms |
| Сұраныс | Vector | BM25 | Hybrid |
|---|---|---|---|
| "Постановление №2864, PEP" | 0.67 | 1.00 | 1.00 |
| "CAR, CET1, №2432" | 0.33 | 0.33 | 0.67 |
Hybrid RRF ауыр Reranker сапасының 96% береді. GPU жоқ. Қосымша модель жоқ. Бір SQL-сұраныс.
5-бөлім: Сәулет зоопаркі vs біртұтас платформа
// үш дерекқор неге керек, бірі болса болады
Типикалық RAG-сәулет
Documents → Elasticsearch (full-text)
→ Qdrant / Milvus (vector)
→ PostgreSQL (metadata) Біртұтас тәсіл
-- Hybrid Search in one SQL query
WITH vector_results AS (
SELECT doc_id,
cosine_distance(embedding, :query_vec) AS score,
ROW_NUMBER() OVER (ORDER BY cosine_distance(embedding, :query_vec)) AS rank
FROM documents
WHERE department = :user_dept
AND version_status = 'active'
ORDER BY score DESC LIMIT 50
),
bm25_results AS (
SELECT doc_id,
score(content) AS score,
ROW_NUMBER() OVER (ORDER BY score(content) DESC) AS rank
FROM documents
WHERE MATCH(content, :query_text)
AND department = :user_dept
AND version_status = 'active'
ORDER BY score DESC LIMIT 50
)
SELECT doc_id,
1.0/(60 + v.rank) + 1.0/(60 + b.rank) AS rrf_score
FROM vector_results v
FULL OUTER JOIN bm25_results b USING (doc_id)
ORDER BY rrf_score DESC
LIMIT 10; | ДК | Vector | BM25 | SQL-сүзгілер | Бір сұраныс |
|---|---|---|---|---|
| Apache Doris | HNSW + brute-force | Inverted Index, BM25 score | Full SQL | Yes |
| Elasticsearch 8+ | kNN + HNSW | Native BM25 | Query DSL | Yes (not SQL) |
| PostgreSQL + pgvector | HNSW + IVFFlat | tsvector/tsquery | Full SQL | Yes |
| SingleStore | Vector Index | Full-text search | Full SQL | Yes |
6-бөлім: Қорытынды — RAG-инженер үшін чек-лист
| Тапсырма | Ұсыныс | Неге |
|---|---|---|
| Чат-бот | Pure Vector | Семантика дәлдіктен маңызды |
| Enterprise RAG | Hybrid RRF | Мағына да, нақты сәйкесу де керек |
| Compliance/аудит | Hybrid + Reranker | Әр % recall маңызды |
| Кодтар бойынша іздеу | BM25 + vector fallback | Дәлдік семантикадан маңызды |
| GPU-ға нөлдік бюджет | BM25 → Hybrid | RRF GPU талап етпейді |
Hybrid Search-тің 5 ережесі
- Әдепкі бойынша Hybrid-ден бастаңыз.
- Біріктіру үшін RRF (k=60) қолданыңыз.
- Hybrid жеткіліксіз болса ғана Reranker қосыңыз.
- Дерекқорлар зоопарғын жасамаңыз.
- Өз деректеріңізде тексеріңіз.
Қорытынды, сусыз
- Не: Не: параллель вектор + BM25, RRF арқылы біріктіру.
- Неге: Неге: вектор нақты сәйкесулерде жеңіледі, кілт сөздер мағынаны түсінбейді.
- Таңдаулы: Таңдаулы: RRF ауыр reranker сапасының 96% береді, тегін.
- Қашан керек: Қашан керек: RAG, құжат іздеу, кодтар/аббревиатуралар.
FAQ
Hybrid Search қарапайым іздеуден қалай ерекшеленеді?
Қарапайым іздеу — тек толықмәтіндік (кілт сөздер) немесе тек векторлық (мағына). Hybrid екеуін біріктіреді: бір сұраныс векторлық пен BM25-іздеуді іске қосады, нәтижелер RRF арқылы бірігіп келеді. Семантика да, кодтар/аббревиатуралардың нақты сәйкесуі де шығады.
RRF деген не және неге k=60?
RRF (Reciprocal Rank Fusion) — екі тізімнің рангтерін скорларды нормализацияламай біріктіру формуласы. k=60 — түпнұсқа мақаладан (Cormack et al., 2009) эмпирикалық таңдалған тұрақты, әр түрлі жинақтарда тұрақты жақсы нәтиже береді.
Hybrid Search үшін GPU керек пе?
Жоқ. Векторлық іздеу (HNSW және аналоги) мен BM25 CPU-да жұмыс істейді. GPU тек Hybrid үстіне Reranker қоссаңыз — топ-N кандидаттарды қайта реттеу үшін жеке модель — қажет болады.
Hybrid үстіне Reranker қашан қосу керек?
Recall шешуші болғанда (compliance, аудит, заң) және латенттілікке (150–500 ms) және GPU-ға төлеуге дайын болғанда. Көпшілік RAG-сценарийлер үшін Hybrid RRF жеткілікті.
Hybrid Search үшін қандай дерекқорды таңдау керек?
Векторлық іздеу (HNSW) мен толықмәтіндік (инвертті индекс, BM25) және сүзгілер үшін толық SQL қолдауы керек. Мысалдар: Apache Doris, Elasticsearch 8+, PostgreSQL pgvector және толықмәтіндікпен.
Hybrid Search-ті өз деректеріңізде тексергіңіз келе ме? Екі аптада пилот құруға көмектесеміз.
./ЗАПРОСИТЬ_ПИЛОТ.shАрхитектура, қолдану сценарийлері, негізгі мүмкіндіктер. 5000+ компания production-да.
Data Warehouse vs Data Lake vs Lakehouse. Open table formats. Бес айқын емес артықшылық.
RBAC, Embedding Drift, Semantic Confusion, аудит, Prompt Injection. Шешімдер мен зерттеулерге сілтемелер.
SuperSet, PowerBI, Tableau баяу ма? Sub-100ms, Auto Query Rewrite, тегін пилот.
MySQL Protocol, үш DAG паттерні, Stream Load. Job Scheduler vs Airflow.
Дереккөздер
- Cormack et al., «Reciprocal Rank Fusion outperforms...» — SIGIR 2009
- Microsoft Azure AI Search: Hybrid Search
- Robertson et al., «Okapi at TREC-3» — BM25, 1994
- Apache Doris — Inverted Index + Vector Search docs
- Біздің бенчмарк: толық нәтижелер github.com/datanomix