nixiesearch:一款全功能搜索引擎
项目介绍
Nixiesearch 是一款全功能的混合搜索引擎,专为云原生环境设计。它能够根据您的数据进行精细调整,提供高效、灵活的搜索体验。Nixiesearch 支持多种数据类型和搜索方法,包括文本、图像和向量搜索,以及先进的过滤、排序和自动补全功能。
项目技术分析
Nixiesearch 基于成熟的 Apache Lucene 库构建,支持 39 种语言,提供 facets、高级过滤器、自动补全建议以及排序等特性。以下是项目的一些关键技术特点:
- 云原生设计:支持 S3 兼容的索引持久性,可以实现快速自动扩展,甚至缩减到零,简化了操作和维护。
- 混合搜索方法:结合了基于文本的搜索和向量搜索,提供精确匹配和语义搜索。
- 内置功能:支持 RAG 查询和向量搜索,且所有推理都可以在单个容器内本地运行,支持 CPU 和 GPU 推理。
项目及技术应用场景
Nixiesearch 适用于各种搜索场景,包括但不限于电子商务、内容管理系统、在线论坛和社交媒体平台。以下是一些具体的应用场景:
- 电子商务网站:提供精准的产品搜索,结合用户行为数据,优化搜索结果。
- 内容管理系统:快速索引和搜索大量文本内容,提供高效的内容检索。
- 在线论坛和社区:实现灵活的帖子搜索,支持文本和图像搜索。
项目特点
Nixiesearch 的以下特点使其在众多搜索引擎中脱颖而出:
- 灵活的索引和搜索:支持多种数据类型和搜索方法,满足不同场景的需求。
- 云原生和可扩展性:能够快速自动扩展,支持 S3 兼容的存储,简化操作。
- 本地推理能力:所有 LLM 推理都可以在本地运行,无需将查询和私有文档发送到外部 API。
- 易于使用:提供简单的配置和部署过程,用户可以快速启动和使用。
- 学习用户意图:通过微调嵌入模型来学习用户意图,提供更准确的搜索结果。
以下是一个简单的使用示例:
首先,获取一个示例数据集,例如 MSRD 电影搜索排名数据集:
curl -o movies.jsonl.gz https://nixiesearch.ai/data/movies.jsonl
然后,创建一个索引映射文件 config.yml
,定义字段和搜索类型:
inference:
embedding:
e5-small:
provider: onnx
model: nixiesearch/e5-small-v2-onnx
prompt:
query: "query: "
doc: "passage: "
schema:
movies: # 索引名称
fields:
title: # 字段名称
type: text
search:
type: hybrid
model: e5-small
language: en # 语言用于词汇搜索
suggest: true
overview:
type: text
search:
type: hybrid
model: e5-small
language: en
接着,运行 Nixiesearch 的 Docker 容器,并加载配置文件:
docker run -itp 8080:8080 -v .:/data nixiesearch/nixiesearch:latest standalone -c /data/config.yml
最后,构建索引并发送搜索查询:
curl -XPUT -d @movies.jsonl http://localhost:8080/movies/_index
curl -XPOST -d '{"query": {"match": {"title":"matrix"}},"fields": ["title"], "size":3}'\
http://localhost:8080/movies/_search
返回的搜索结果将包括与查询最相关的电影标题。
Nixiesearch 的设计灵感来源于 Amazon 搜索引擎的设计,它采用了独立的状态索引器和状态无关的搜索后端,通过 S3 兼容的块存储进行索引同步。这种设计避免了索引状态红色和集群脑裂的问题,同时也支持基于 Kafka 的实时文档索引。
Nixiesearch 使用 RRF(Reciprocal Rank Fusion)方法结合文本和神经搜索结果,提供更准确的搜索结果。此外,它还计划支持 LLM 微调功能,以进一步提高搜索的准确性和相关性。
总之,Nixiesearch 是一款功能强大、灵活且易于使用的搜索引擎,适用于多种搜索场景,具有很高的实用价值。