Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

Presentando las potentes capacidades de búsqueda de texto completo y búsqueda híbrida de MyScale

MyScale (opens new window) es una base de datos vectorial SQL completamente administrada construida sobre ClickHouse, que ofrece capacidades avanzadas de búsqueda vectorial. En la versión 1.5.0 de MyScale, presentamos una función de búsqueda de texto completo mejorada impulsada por Tantivy (opens new window).

La implementación del algoritmo BM25 (opens new window) para calcular las puntuaciones de relevancia de los resultados de búsqueda mejora significativamente la búsqueda de texto completo en MyScale. El algoritmo BM25 es una característica fundamental en la búsqueda de texto, ya que proporciona una forma de clasificar los resultados de búsqueda según su relevancia para la consulta original. Considera factores como la frecuencia de términos, la frecuencia inversa de documentos y la longitud del documento. El algoritmo asigna una puntuación a cada documento, lo que permite mostrar primero los resultados más relevantes.

Sin embargo, la búsqueda de texto completo de MyScale y ClickHouse enfrentan actualmente dos desafíos principales (opens new window):

  • Baja velocidad de rendimiento: La búsqueda y clasificación de tablas grandes es lenta, especialmente a medida que las tablas aumentan a millones de filas.
  • Falta de funcionalidad: ClickHouse carece de soporte para búsqueda difusa, afinación de relevancia y puntuación de relevancia BM25, características comúnmente encontradas en los motores de búsqueda modernos.

La afinación de relevancia es otra característica esencial en la búsqueda de texto. Permite ajustar el algoritmo de búsqueda para priorizar aspectos específicos de la búsqueda, como dar mayor peso a las coincidencias en el título en comparación con el cuerpo de un documento, mejorando significativamente la precisión y utilidad de los resultados de búsqueda.

La búsqueda difusa también es valiosa, especialmente para manejar errores tipográficos o errores de ortografía en las consultas de búsqueda. Con ella, el motor de búsqueda puede encontrar documentos similares a la consulta de búsqueda, incluso si no son una coincidencia exacta. Mejora significativamente la experiencia del usuario y garantiza que no se pierdan resultados relevantes debido a pequeños errores de ortografía.

El índice de búsqueda de texto completo de MyScale tiene como objetivo cerrar esta brecha entre MyScale y motores especializados como Elasticsearch, eliminando la necesidad de servicios adicionales.

Las características clave del índice de búsqueda de texto completo de MyScale incluyen:

  • Completamente nativo de MyScale sin dependencias externas;
  • Construido sobre Tantivy, una alternativa rápida y eficiente en recursos a Apache Lucene;
  • Los tiempos de consulta sobre 5 millones de filas son 300 veces más rápidos que el índice invertido incorporado de ClickHouse;
  • Admite búsquedas difusas y con comodines junto con tokenizadores avanzados;
  • Utiliza BM25 para la puntuación de relevancia, similar a Elasticsearch; y
  • Búsqueda en tiempo real sin necesidad de reindexación manual.
    Boost Your AI App Efficiency now
    Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
    Free Trial
    Explore our product
    Por ejemplo:

Primero, creamos una tabla para almacenar datos de Wikipedia y probar la funcionalidad de búsqueda de texto completo.

CREATE TABLE default.en_wiki_abstract(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
)
ENGINE = MergeTree
ORDER BY id;

Al crear un índice de búsqueda de texto completo (FTS) en la columna body, es importante tener en cuenta que el tokenizador se puede configurar dentro de los argumentos del índice. En este escenario, hemos seleccionado un tokenizador con derivación en inglés y palabras de parada.

ALTER TABLE default.en_wiki_abstract
ADD INDEX body_idx (body)
TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}');

A continuación, cargamos los datos usando S3:

INSERT INTO default.en_wiki_abstract
SELECT * FROM s3('https://myscale-datasets.s3.ap-southeast-1.amazonaws.com/wiki_abstract_5m.parquet','Parquet');

Ahora podemos buscar en la columna body utilizando la función TextSearch(), que devolverá una puntuación en bm25.

SELECT
    id,
    title,
    body,
    TextSearch(body, 'non-profit institute in Washington') AS score
FROM default.en_wiki_abstract
ORDER BY score DESC
LIMIT 5;

Resultado:

id title body score
3400768 Drug Strategies Drug Strategies is a non-profit research institute located in Washington D.C. 24.457561
872513 Earth Policy Institute Earth Policy Institute was an independent non-profit environmental organization based in Washington, D.C. 22.730673
895248 Arab American Institute Founded in 1985, the Arab American Institute is a non-profit membership organization based in Washington D.C. 21.955559
1950599 Environmental Law Institute The Environmental Law Institute (ELI) is a non-profit, non-partisan organization, headquartered in Washington, D.C. 21.231567
2351478 Public Knowledge Public Knowledge is a non-profit Washington, D.C. 20.742344

Además, la función de búsqueda de texto completo dentro de MyScale se puede integrar con búsquedas vectoriales para realizar búsquedas híbridas en tuberías RAG. Los usuarios suelen realizar consultas separadas utilizando búsquedas vectoriales y de texto completo, luego reorganizan los resultados de ambas búsquedas aplicando algoritmos de fusión a través de bibliotecas de Python como ranx (opens new window).

Para obtener guías detalladas sobre estos temas, visita:

Por último, el índice de búsqueda de texto completo con Tantivy estará pronto disponible en nuestro proyecto de código abierto MyScaleDB (opens new window), ¡así que mantente atento!

Keep Reading

Start building your Al projects with MyScale today

Free Trial
Contact Us