MyScale 是一个基于 ClickHouse 构建的全面托管的 SQL 向量数据库,提供先进的向量搜索功能。在 MyScale 的 1.5.0 版本中,我们引入了由 Tantivy 提供支持的升级版全文搜索功能。
通过实现 BM25 算法来计算搜索结果的相关性得分,显著提高了 MyScale 的全文搜索功能。BM25 算法是文本搜索中的关键特性,它提供了一种根据与原始查询的相关性对搜索结果进行排序的方法。它考虑了词频、逆文档频率和文档长度等因素。该算法为每个文档分配一个得分,使得最相关的结果能够首先显示。
然而,MyScale 和 ClickHouse 的全文搜索目前面临两个主要挑战:
- **性能低下:**搜索和排序大型表格很慢,特别是当表格增加到数百万行时。
- **功能不足:**ClickHouse 缺乏对模糊搜索、相关性调整和 BM25 相关性评分的支持,这些功能在现代搜索引擎中很常见。
相关性调整是文本搜索中的另一个重要功能。它允许您对搜索算法进行微调,以优先考虑搜索的特定方面,例如将标题中的匹配结果与正文中的匹配结果进行加权,从而显著提高搜索结果的准确性和实用性。
模糊搜索也非常有价值,特别是用于处理搜索查询中的拼写错误或拼写错误。借助模糊搜索,搜索引擎可以找到与搜索查询相似的文档,即使它们不是完全匹配。这显著提升了用户体验,并确保不会因为小的拼写错误而错过相关结果。
MyScale 的全文搜索索引旨在弥合 MyScale 和专用引擎(如 Elasticsearch)之间的差距,消除了对额外服务的需求。
MyScale 全文搜索索引的主要特点包括:
- 完全与 MyScale 原生集成,无需外部依赖;
- 基于 Tantivy 构建,是 Apache Lucene 的快速、资源高效的替代品;
- 查询时间比 ClickHouse 内置的倒排索引快 300 倍以上;
- 支持模糊搜索、通配符搜索以及丰富的分词器;
- 使用类似于 Elasticsearch 的 BM25 进行相关性评分;
- 实时搜索,无需手动重新索引。
例如:Boost Your AI App Efficiency nowSign up for free to benefit from 150+ QPS with 5,000,000 vectorsFree TrialExplore our product
首先,我们创建一个表来存储维基百科数据,以测试全文搜索功能。
CREATE TABLE default.en_wiki_abstract(
`id` UInt64,
`body` String,
`title` String,
`url` String,
)
ENGINE = MergeTree
ORDER BY id;
在body
列上创建全文搜索(FTS)索引时,需要注意索引参数中的分词器的配置。在这种情况下,我们选择了一个具有英语词干处理和停用词的分词器。
ALTER TABLE default.en_wiki_abstract
ADD INDEX body_idx (body)
TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}');
接下来,我们使用 S3 上传数据:
INSERT INTO default.en_wiki_abstract
SELECT * FROM s3('https://myscale-datasets.s3.ap-southeast-1.amazonaws.com/wiki_abstract_5m.parquet','Parquet');
现在,我们可以使用TextSearch()
函数在body
列上进行搜索,该函数将返回一个 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;
输出:
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 |
此外,MyScale 内的全文搜索功能可以与向量搜索集成,通过 RAG 流水线进行混合搜索。用户通常会使用向量搜索和全文搜索进行单独的查询,然后通过应用 Python 库(如 ranx)中的融合算法重新组织来自两个搜索的结果。
有关这些主题的详细指南,请访问:
最后,基于 Tantivy 的全文搜索索引将很快在我们的开源项目MyScaleDB (opens new window)中提供,敬请关注!