Milvus中如何实现全文检索(Full Text Seach)?

在前两篇文章中(Milvus python库 pymilvus 常用操作详解之Collection(上)Milvus python库 pymilvus 常用操作详解之Collection(下)),我们了解了Milvus基于dense vector和sparse vector实现的混合向量检索,这篇文章让我们着重了解一下基于sparse vector的检索,即全文检索。

何为全文检索?

以下来自 milvus 官方文档原文:

Full text search is a feature that retrieves documents containing specific terms or phrases in text datasets, then ranking the results based on relevance. This feature overcomes semantic search limitations, which might overlook precise terms, ensuring you receive the most accurate and contextually relevant results. Additionally, it simplifies vector searches by accepting raw text input, automatically converting your text data into sparse embeddings without the need to manually generate vector embeddings.

全文搜索是一种功能,可以在文本数据集中检索包含特定术语或短语的文档,并根据相关性对结果进行排序。该功能克服了语义搜索的限制,语义搜索可能会忽略精确的术语,而全文搜索则确保您获得最准确且在语境上相关的结果。此外,它通过接受原始文本输入来简化向量搜索,自动将您的文本数据转换为稀疏嵌入,而无需手动生成向量嵌入。(ChatGPT-4o翻译)

简而言之,全文检索是一种基于精准关键词匹配的检索方式,相较于基于深度学习生成的向量检索(适合语义匹配检索场景),全文检索在需要基于精确关键词进行匹配的检索场景下表现更佳。当然各取其长将两者结合起来实现混合检索也是非常建议的选择。(感兴趣可以前往 BGE-M3模型结合Milvus向量数据库强强联合实现混合检索

全文检索的流程

Milvus 将实现全文检索一共分为了五个大的流程:

  1. 文本输入:无需人工将原始文本进行向量化处理,我们只需要提供被检索的内容或用户询问文本;
  2. 文本分析;Milvus 使用分析器将输入文本分解成单个的可搜索词条;
  3. 函数处理:内置函数接收已分词的词条,并将其转换为稀疏向量表示;
  4. 集合存储:Milvus 将这些稀疏嵌入存储在一个集合中,以便高效检索;
  5. BM25 评分:在检索时,Milvus 应用 BM25 算法计算查询文本和存储文档的相关性得分,并对匹配结果进行排序。
    在这里插入图片描述

代码实现

主要分为三个步骤:

  1. 创建集合:设置一个具有必要字段的集合,并定义一个函数将原始文本转换为稀疏向量;

  2. 插入数据:将原始文本文档和生成的稀疏向量表达导入集合;

  3. 执行搜索:使用查询文本搜索集合并得到检索相关结果。

如果希望基于 BM25算法,则参考官方文档代码示例。

为了打造一个既高效又准确的问答系统,我们需要充分利用RAG技术和Milvus向量数据库的强项。RAG技术通过检索增强生成,能够在生成答案之前检索大量文档,从而获取相关的信息。Milvus作为一个向量数据库,能够高效地处理和检索向量数据,这在处理自然语言生成任务时至关重要。 参考资源链接:[AI问答系统构建:RAG模型与Milvus向量数据库的应用](https://wenku.csdn.net/doc/5msrp9299g?spm=1055.2569.3001.10343) 首先,我们需要配置好开发环境,安装必要的Python依赖包,这可以在requirements.txt文件中找到。然后,通过Milvus数据库管理脚本(ManageMilvus.py)建立与Milvus数据库的连接,并创建相应的数据表来存储向量数据。 接下来,我们使用Load_Document脚本来加载知识库或数据集到Milvus数据库中。这些数据集将用于检索过程,以帮助系统生成更准确的答案。 为了实现问题检索与答案生成,我们需要编写核心逻辑代码(rag.py),这包括处理输入问题、查询Milvus数据库检索相关文档,并使用RAG技术结合OpenAI API生成答案。在这个过程中,OpenAI API提供了强大的自然语言处理能力,而Milvus数据库则提供了快速准确的检索能力。 在实际编程中,我们需要处理不同类型的异常情况,并提供相应的错误处理机制(help.py)。最后,我们可以利用example文件夹中的示例代码来测试问答系统,并根据反馈调整系统性能。 通过上述步骤,我们可以构建一个既能够快速检索信息,又能利用大模型生成高质量答案的问答系统。对于想要深入了解如何使用这些技术构建问答系统的人来说,《AI问答系统构建:RAG模型与Milvus向量数据库的应用》这份资源将提供一个详尽的指南和实战案例,是学习和应用这些前沿技术的宝贵资料。 参考资源链接:[AI问答系统构建:RAG模型与Milvus向量数据库的应用](https://wenku.csdn.net/doc/5msrp9299g?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值