La búsqueda semántica entiende el significado pero pierde términos exactos. La búsqueda por palabras clave BM25 coincide términos exactos pero pierde el significado. La búsqueda híbrida combina ambos enfoques: BM25 para precisión en términos exactos, búsqueda semántica para cobertura en conceptos relacionados. FLIN implementa esto como una función integrada hybrid_search() que fusiona resultados de ambos métodos de búsqueda usando Reciprocal Rank Fusion.
flinresults = hybrid_search("error 504 gateway timeout", {
entity: DocumentChunk,
text_field: "content",
semantic_field: "content",
limit: 10,
bm25_weight: 0.4,
semantic_weight: 0.6
})Rendimiento
| Componente | Latencia | Notas |
|---|---|---|
| Búsqueda BM25 (100K docs) | 1-3 ms | Búsqueda en índice invertido |
| Búsqueda semántica (100K docs) | 3-5 ms | HNSW vecino más cercano aproximado |
| Fusión RRF | < 1 ms | Cómputo de puntuación |
| Búsqueda híbrida total | 5-10 ms | Ambas búsquedas en paralelo |
Ambas búsquedas se ejecutan concurrentemente usando el runtime async de Rust. La latencia total es aproximadamente el máximo de las dos latencias individuales, no la suma.
Esta es la Parte 123 de la serie "Cómo construimos FLIN", que documenta cómo un CEO en Abidjan y un CTO de IA diseñaron y construyeron un lenguaje de programación desde cero.
Navegación de la serie: - [122] Chunking consciente del código para RAG - [123] Búsqueda híbrida de documentos: BM25 + semántica (estás aquí) - [124] Diseño de lenguaje AI-first - [125] Analíticas de búsqueda y caché de resultados