Búsqueda semántica vs. búsqueda léxica vs. búsqueda de texto completo
En el mundo digital en el que vivimos hoy, los motores de búsqueda se han vuelto parte integral de nuestras vidas, ayudándonos a acceder a la información de forma rápida y sencilla. En el corazón de estos motores de búsqueda se encuentran los algoritmos de recuperación de información, que determinan cómo se recupera la información.
Hay varios algoritmos de recuperación de información disponibles, que van desde métodos tradicionales como la búsqueda de texto completo y léxica hasta técnicas más avanzadas como la búsqueda semántica. Cada uno de estos algoritmos tiene sus propias ventajas y desventajas; por lo tanto, es crucial que elijamos el mejor algoritmo de recuperación de información que se adapte a nuestro caso de uso.
Este artículo analizará estos algoritmos de recuperación de información, centrándose específicamente en las búsquedas léxica, de texto completo y semántica. Empecemos con la más sencilla: la búsqueda léxica.
Búsqueda léxica
La búsqueda léxica, también conocida como búsqueda por palabras clave, se refiere a un algoritmo de búsqueda basado en el análisis del texto a nivel de palabra (de ahí el nombre). Este algoritmo de recuperación de información coincide con los términos de la consulta exactamente como aparecen en el texto. Por ejemplo, si nuestra consulta de búsqueda es “run,” el algoritmo devolverá todas las instancias del término “run” en un documento.
La búsqueda léxica es el algoritmo de recuperación de información más básico disponible, ya que devuelve solo aquellos términos en un documento que contienen una coincidencia exacta con nuestra consulta. Esto hace que la búsqueda léxica sea particularmente útil cuando se requieren precisión y especificidad, como al encontrar documentos o registros que contienen una cadena o palabra específica.
Figura: Ilustración de una búsqueda léxica simple.
Sin embargo, la simplicidad de la búsqueda léxica también conlleva varios inconvenientes. En primer lugar, no tolera errores tipográficos en nuestra consulta. Por ejemplo, si ingresamos por error “ron” en lugar de “run,” no obtendremos los resultados que estamos buscando. En segundo lugar, la búsqueda léxica no tiene en cuenta sinónimos, derivación o lematización. En consecuencia, buscar “run” no coincidirá con palabras similares en diferentes formas, como “ran” o “running.”
Además, la búsqueda léxica puede no ser la mejor opción si buscamos los registros más relevantes según nuestra consulta. Los documentos o registros que contienen el término de nuestra consulta carecen de cualquier noción de orden o clasificación, lo que dificulta evaluar la relevancia de los resultados devueltos por la búsqueda léxica.
Como puede ver, la búsqueda léxica definitivamente tiene limitaciones significativas al considerar las demandas de la mayoría de los casos de uso de recuperación de información. Además, los usuarios a menudo requieren más flexibilidad con respecto a los términos incluidos en los resultados, algo de lo que la búsqueda léxica también carece. Aquí es donde entra en juego la búsqueda de texto completo.
Búsqueda de texto completo
Una búsqueda de texto completo funciona de manera similar a una búsqueda léxica, buscando encontrar registros que contengan los términos de nuestra consulta. Sin embargo, la búsqueda de texto completo ofrece capacidades más amplias y avanzadas que la búsqueda léxica, abordando los problemas asociados con la búsqueda léxica.
Implementar la búsqueda de texto completo a menudo incorpora técnicas populares de Procesamiento del Lenguaje Natural (NLP), como la derivación y la lematización. Esto significa que cuando buscamos el término “run,” todos los documentos o registros con palabras similares en diferentes formas, como “ran” o “running,” también se incluirán en los resultados.
Figura: Ilustración del avance de la búsqueda de texto completo en comparación con la búsqueda léxica tradicional.
Para ordenar los resultados de búsqueda según la relevancia, también podemos implementar algoritmos como TF-IDF y BM25. Hablemos más sobre estos dos algoritmos.
Fundamentos de TF-IDF y BM25
Frecuencia de término-Frecuencia inversa de documento (TF-IDF) utiliza un método estadístico sencillo para determinar la relevancia de un documento o registro para un término o consulta determinados. Consta de dos componentes:
Frecuencia de término (TF): Calcula el número de apariciones del término de consulta en un documento. Por lo tanto, cuanto más frecuentemente aparezca el término de consulta en un documento, mayor será la puntuación TF para ese documento.
Frecuencia inversa de documento (IDF): Calcula la proporción de documentos en toda la colección que contienen el término de consulta.
El objetivo principal del componente IDF es penalizar términos comunes y menos significativos como “a,” “an,” “the,” y “and,” que tienden a aparecer en casi todos los documentos. Por ejemplo, si nuestro término de consulta es “mix and match,” queremos que los documentos más relevantes contengan muchas instancias de “mix” y “match” en lugar de numerosas apariciones de “and”. Finalmente, la puntuación TF-IDF final de un documento se obtiene multiplicando las puntuaciones TF e IDF.
Una desventaja principal de TF-IDF es que no considera la longitud del documento al calcular la relevancia. En realidad, los documentos más largos tienen más probabilidades de contener nuestro término de consulta con mayor frecuencia. Por ejemplo, si nuestro término de consulta aparece 10 veces en un documento de 1,000 palabras (Documento A), mientras que solo aparece 5 veces en un documento de 50 palabras (Documento B), podríamos argumentar que el Documento B podría ser más relevante a pesar de tener menos apariciones.
BM25 aborda esta limitación de TF-IDF introduciendo términos adicionales y ampliando la ecuación TF-IDF para tener en cuenta la longitud del documento.
Al hacerlo, BM25 elimina el sesgo hacia documentos más largos al medir la relevancia de un documento para cualquier consulta determinada.
El concepto de embedding disperso
Tanto TF-IDF como BM25 pueden representarse como embeddings dispersos. Un embedding disperso es un vector n-dimensional, donde la dimensionalidad depende del número de términos únicos en nuestro corpus o colección de documentos.
Por ejemplo, digamos que tenemos 10 documentos que contienen un total de 10,000 palabras únicas. Cada documento se transformaría entonces en un vector de 10,000 dimensiones, donde cada dimensión representaría la importancia de un término particular en ese documento.
Figura: Ilustración de la transformación de documento a embedding disperso.
Dado que la dimensionalidad del vector está determinada por el número de términos únicos en el corpus, a menudo terminamos con vectores de enorme dimensionalidad. Además, debido a que un documento normalmente contiene solo una pequeña fracción de los términos disponibles, una gran mayoría de los elementos de estos vectores será cero, como puedes ver en la imagen anterior. Por eso dichos vectores se conocen comúnmente como embeddings dispersos.
Ahora que todos los documentos están representados como embeddings, podemos calcular la similitud entre dos embeddings cualesquiera utilizando algoritmos comunes como la similitud del coseno o la distancia euclidiana. La intuición es que dos documentos con términos similares de alta importancia tendrán una alta similitud.
A pesar de las ventajas de las incrustaciones dispersas en la búsqueda de texto completo, existe un inconveniente significativo: no tienen en cuenta el significado semántico de los términos de la consulta. Por ejemplo, si nuestra consulta es “dispositivo Apple,” los documentos que contienen muchas instancias de “apple” (la fruta) pueden clasificarse por encima de documentos tecnológicos que son más relevantes para nuestra consulta pero no contienen el término “Apple” (la empresa).
Figura: Ejemplos de consultas que requieren comprensión semántica y contexto.
Cuando incluir resultados con significados semánticos similares es un requisito para nuestro caso de uso, la búsqueda de texto completo puede no ser el mejor algoritmo de recuperación de información que utilizar. Aquí es donde entra en juego la búsqueda semántica.
Búsqueda semántica
La búsqueda semántica es un enfoque útil cuando queremos resultados de búsqueda que tengan en cuenta el significado semántico. Usando el ejemplo mencionado en la sección anterior, cuando escribimos una consulta como “dispositivo Apple”, en realidad no estamos buscando documentos o registros que contengan la palabra “apple”. En cambio, buscamos documentos que hablen sobre tecnologías, preferiblemente dispositivos Apple. En este caso, la búsqueda de texto completo produciría resultados no deseados, lo que hace que la búsqueda semántica sea la mejor opción.
El concepto de incrustación densa
La búsqueda semántica funciona utilizando sofisticados modelos de IA para transformar nuestros documentos y términos de consulta en incrustaciones. Sin embargo, las incrustaciones producidas por estos modelos, a menudo llamadas incrustaciones densas, difieren de las incrustaciones dispersas analizadas anteriormente.
En las incrustaciones densas, los valores en cada dimensión vectorial rara vez son exactamente cero, y la dimensionalidad en sí depende del modelo utilizado. Sin embargo, la dimensionalidad de las incrustaciones densas es mucho menor que la de las incrustaciones dispersas.
Figura: Ilustración de la transformación de documento a incrustación densa.
Las incrustaciones densas contienen información semánticamente rica sobre el contenido que representan. Por lo tanto, para determinar cuán semánticamente similares son dos incrustaciones densas, podemos simplemente usar algoritmos de similitud populares como la similitud coseno o la distancia euclidiana.
El papel de las bases de datos vectoriales en la búsqueda semántica
En aplicaciones reales de recuperación de información, es probable que tratemos con millones o incluso miles de millones de incrustaciones densas. Por lo tanto, no es práctico almacenar todas estas incrustaciones en la memoria de nuestro ordenador; y necesitamos un sistema de base de datos capaz de almacenarlas de manera eficiente.
Una base de datos vectorial es un sistema que nos permite almacenar grandes cantidades de incrustaciones densas de manera eficiente mediante el empleo de métodos de indexación avanzados como vecinos más cercanos aproximados (ANN) y mundo pequeño navegable jerárquico (HNSW). También proporciona funcionalidad para realizar operaciones de búsqueda vectorial con el fin de encontrar los documentos más relevantes semánticamente para nuestra consulta utilizando algoritmos de similitud populares como la similitud coseno y la distancia euclidiana.
Figura: Flujo de trabajo para realizar una operación de búsqueda vectorial.
Además, las bases de datos vectoriales populares como Milvus ofrecen características avanzadas como la búsqueda híbrida, que nos permite realizar búsquedas vectoriales combinando las fortalezas de las incrustaciones densas y dispersas. Analizaremos esto con más detalle en las siguientes secciones.
Búsqueda léxica vs. búsqueda de texto completo vs. búsqueda semántica
Ahora que tenemos una comprensión detallada de la búsqueda léxica, de texto completo y semántica, comparemos sus mecanismos de coincidencia, complejidad, casos de uso de ejemplo y rendimiento.
| Búsqueda semántica | Búsqueda léxica | Búsqueda de texto completo | |
|---|---|---|---|
| Mecanismo | Contexto e intención | Coincidencia exacta | Palabra clave y relevancia |
| Complejidad | Alta | Baja | Media |
| Rendimiento | Más lenta | Rápida | Moderado |
| Casos de uso | Sistemas basados en PLN, generación aumentada por recuperación (RAG), aplicaciones impulsadas por LLM, sistemas de recomendación | Búsqueda simple | Sistemas con muchos documentos |
Tabla: Búsqueda léxica vs. búsqueda de texto completo vs. búsqueda semántica
En cuanto al mecanismo de coincidencia, la búsqueda léxica es la más sencilla de las tres, ya que coincide con términos exactos en la consulta. La búsqueda de texto completo mejora la búsqueda léxica al escanear documentos completos en busca de apariciones de los términos de la consulta, lo que nos permite ordenar los resultados en función de su relevancia para la consulta. Mientras tanto, la búsqueda semántica hace coincidir los términos de la consulta con una colección de documentos en función del significado semántico y el contexto, utilizando modelos avanzados de aprendizaje profundo y técnicas de PLN.
En cuanto a la complejidad, la búsqueda léxica también es la opción más sencilla. La búsqueda de texto completo es ligeramente más compleja debido a la introducción de algoritmos como TF-IDF o BM25, que transforman textos en incrustaciones dispersas. La búsqueda semántica es la más compleja porque emplea modelos avanzados de aprendizaje profundo para convertir textos en incrustaciones densas.
Por ejemplo, la búsqueda léxica es una excelente opción cuando la coincidencia exacta es crítica, como localizar el nombre de una variable en búsquedas de código o encontrar un ID de producto en un documento. La búsqueda de texto completo es adecuada para aplicaciones cuando se buscan documentos con términos o conceptos especiales en la consulta, como buscar en bases de datos académicas o repositorios legales. La búsqueda semántica es ideal para casos de uso en los que comprender el contexto es la prioridad, como chatbots de atención al cliente, sistemas de recomendación y descubrimiento de contenido.
En términos de rendimiento, las búsquedas semánticas y de texto completo son relativamente más lentas debido a su complejidad, mientras que la búsqueda léxica es más rápida debido a su enfoque directo.
El concepto de búsqueda híbrida
Considerando la diversidad y los pros y contras de cada algoritmo de recuperación de información, elegir el mejor no es fácil y puede que no satisfaga realmente todos tus requisitos. En casos de uso prácticos, incluso podríamos necesitar emplear más de un algoritmo para satisfacer diversas necesidades dentro de nuestra aplicación, ya que los sistemas eficaces de recuperación de información deben proporcionar tanto comprensión semántica como coincidencia exacta de palabras clave para los usuarios. La búsqueda híbrida es un concepto diseñado para abordar este desafío.
Búsqueda híbrida nos permite combinar dos algoritmos de búsqueda diferentes, más comúnmente la combinación de búsqueda semántica con búsqueda de texto completo o léxica. Sin embargo, implementar una búsqueda híbrida presenta desafíos debido a los diferentes sistemas involucrados. Específicamente, necesitamos una base de datos vectorial como Milvus para almacenar embeddings densos y realizar búsquedas semánticas, y un motor de búsqueda como Elasticsearch para realizar búsquedas de texto completo.
Sin embargo, usar dos sistemas separados para dar cabida a diferentes algoritmos de recuperación introduce nuevas complejidades. Significa lidiar con configuraciones y tareas de mantenimiento separadas, lo que puede generar problemas de integración más adelante. Este enfoque también puede duplicar nuestros costos al requerir almacenamiento de datos en dos infraestructuras.
Figura: Elasticsearch vs Milvus en búsqueda híbrida.
Una mejor solución es usar un sistema unificado capaz de facilitar tanto búsquedas semánticas como de texto completo/léxicas. Milvus es una base de datos vectorial de código abierto perfecta para este caso, ya que admite la implementación de búsquedas semánticas y de texto completo híbridas. Además, Milvus también admite búsqueda con filtrado de metadatos, búsqueda por rango, y reranking para obtener los resultados más precisos.
Con Milvus, podemos almacenar todos los datos necesarios para varios tipos de búsquedas, incluidos embeddings densos, embeddings dispersos y metadatos. Esto nos permite realizar búsquedas híbridas, como búsquedas semánticas y de texto completo o léxicas. Gracias a sus métodos avanzados de indexación, Milvus también está altamente optimizado para operaciones de búsqueda vectorial, lo que acelera significativamente el proceso de recuperación de información en comparación con Elasticsearch.
Conclusión
La elección del algoritmo de recuperación de información desempeña un papel importante en la determinación de la eficiencia y relevancia de los resultados de búsqueda en nuestra aplicación. La búsqueda léxica ofrece coincidencia exacta de términos, lo que la hace ideal para escenarios donde las coincidencias exactas son esenciales. La búsqueda de texto completo introduce avances en la búsqueda léxica al incorporar técnicas como stemming, coincidencia difusa y clasificación por relevancia con algoritmos como TF-IDF y BM25, lo que la hace adecuada para aplicaciones con gran cantidad de documentos. Mientras tanto, la búsqueda semántica proporciona capacidades para comprender el contexto y la intención, lo que la hace muy útil para sistemas complejos basados en NLP, como los chatbots de atención al cliente.
Sin embargo, a medida que crece la demanda de sistemas de búsqueda flexibles y eficientes, la búsqueda híbrida se convierte en una solución práctica para aplicar las fortalezas de múltiples algoritmos de recuperación. Al integrar tanto la búsqueda semántica como la de texto completo/léxica, Milvus ofrece flexibilidad y una experiencia de usuario mejorada. Consulta este tutorial para probar nuestras búsquedas semánticas y de texto completo con Milvus.
Recursos relacionados
Sigue leyendo

We spent 8 years making vector databases faster. Then we stopped.
Rarely queried embeddings still need to stay searchable. See how Vector Lakebase enables on-demand vector search without always-on compute costs.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.

Zilliz Cloud BYOC Upgrades: Bring Enterprise-Grade Security, Networking Isolation, and More
Discover how Zilliz Cloud BYOC brings enterprise-grade security, networking isolation, and infrastructure automation to vector database deployments in AWS


