向量搜索节点
什么是向量搜索节点?
向量搜索节点是 Magic Flow 工作流中用于在向量数据库中快速检索相似内容的功能节点。它能够根据用户提供的查询文本,在预先存储的知识库中找出语义相似的内容片段。简单来说,向量搜索就像是一个智能搜索引擎,不仅能找到包含关键词的内容,还能理解问题的语义并返回相关信息。
图片说明:
向量搜索节点界面展示了节点的主要配置区域,包括知识库选择、查询文本输入、相似度阈值设置以及结果数量限制等参数配置选项。
为什么需要向量搜索节点?
在构建智能应用时,向量搜索节点解决了从大量非结构化数据中精准找到相关信息的难题:
- 语义理解:基于语义而非简单关键词匹配,能够理解用户问题的真实意图
- 信息检索:从海量文档和知识库中快速找到最相关的内容片段
- 知识支持:为大模型提供准确的专业知识和背景信息,提升回答质量
- 自定义知识:利用企业特有数据构建专属问答能力,解决通用模型知识有限的问题
- 高效处理:减少大模型处理的信息量,提高响应速度,节省 token 消耗
适用场景
1. 企业知识库问答系统
基于公司内部文档、产品手册或技术资料构建问答系统,员工可以用自然语言提问获取精准答案,无需浏览大量文件。
2. 智能客服助手
为客服助手提供产品信息、常见问题解决方案等知识支持,帮助客服人员或聊天机器人快速、准确地回答客户问题。
3. 文档分析与信息提取
从大量文档中提取特定信息,如合同条款、技术规范或研究报告中的关键数据,节省人工查找时间。
节点参数说明
基本参数
参数名称 | 说明 | 是否必填 | 默认值 |
---|---|---|---|
选择知识库 | 选择要操作的知识库,通过【固定值或表达式】,从系统中已创建的知识库中选择 | 是 | 无 |
搜索关键词 | 用于搜索相似内容的文本,通常是问题或关键描述 | 是 | 无 |
最大召回数 | 返回的相似内容数量上限 | 否 | 5 |
最小匹配度 | 内容相似度的最低要求,范围 0-1,值越大要求越严格 | 否 | 0.4 |
元数据匹配 | 根据文档元数据信息进行筛选,如文档来源、创建时间等 | 否 | - |
输出内容
输出字段 | 说明 | 类型 |
---|---|---|
召回结果集(similarities) | 搜索到的相似内容数组,包含所有匹配的文本片段 | 字符串数组 |
片段列表(fragments) | 完整的搜索结果信息,包含内容、元数据和业务 ID 等详细信息 | 对象数组 |
使用说明
基本配置步骤
- 选择知识库:
- 从下拉菜单中选择不同的方式,
- 通过@动态引用上个节点的知识库或者是已创建的知识库
- 配置关键词:
- 输入固定的搜索文本
- 或使用变量引用动态内容,如
引用用户的实际问题
- 设置最大召回数量:
- 根据需求设置返回结果的数量上限
- 一般建议 5-10 条,太多可能引入无关信息,太少可能遗漏重要内容
- 调整匹配度阈值:
- 设置相似度阈值,控制结果的精确性
- 阈值越高,结果越精确但可能遗漏相关内容
- 阈值越低,覆盖面越广但可能包含不太相关的内容
- 配置元数据过滤(可选):
- 如需进一步筛选结果,可设置元数据过滤条件
- 例如,限定特定来源或时间范围的文档
进阶技巧
优化搜索文本
提高向量搜索效果的关键是编写有效的查询文本:
- 具体明确:使用清晰、具体的描述,而非模糊的表述
- 关键信息优先:将最重要的关键词和概念放在查询文本的前面
- 避免无关信息:精简查询文本,删除对搜索无帮助的词语
与其他节点协同
向量搜索节点通常需要与其他节点结合使用:
- 搭配大模型调用节点:
- 将向量搜索的结果作为上下文提供给大模型
- 使用代码执行节点处理搜索结果,再传递给大模型
- 结合条件分支节点:
- 检查搜索结果是否为空
- 根据结果数量或相似度决定后续处理方式
- 配合文本切割节点:
- 先使用文本切割处理长文本
- 再对切割后的片段进行向量存储和检索
注意事项
向量库准备
在使用向量搜索节点前,需要先准备好向量知识库:
- 确保已经创建并导入了相关知识文档
- 检查向量库的更新状态,确保数据是最新的
- 对于大型知识库,考虑合理分类以提高检索精度
查询文本长度
查询文本的长度会影响搜索效果:
- 过短的查询可能缺乏足够信息进行准确匹配
- 过长的查询可能引入噪音,稀释核心关键词的权重
- 建议查询文本保持在 20-100 个字符之间
相似度阈值调优
相似度阈值需要根据具体应用场景调整:
- 通用问答:建议使用 0.4-0.6 的阈值
- 专业知识检索:可以提高到 0.6-0.8 以确保准确性
- 探索性搜索:可以降低到 0.3-0.5 以获取更多相关信息
常见问题
问题 1:搜索结果与预期不符怎么办?
解决方案:
- 检查知识库内容是否包含相关信息
- 尝试改写查询文本,使用更精确的描述
- 调低相似度阈值,获取更广泛的结果
- 使用元数据过滤缩小搜索范围
问题 2:如何处理搜索结果为空的情况?
解决方案:
- 在工作流中添加条件分支,检测结果数量
- 设置备用响应或默认知识
- 降低相似度阈值,放宽匹配条件
- 使用更通用的查询文本重新搜索
问题 3:搜索速度较慢怎么优化?
解决方案:
- 减少检索的知识库数量,只选择最相关的库
- 优化知识库结构,避免过大的单一库
- 减少返回结果数量限制
- 使用元数据过滤缩小搜索范围
常见搭配节点
节点类型 | 搭配原因 |
---|---|
大模型调用节点 | 使用搜索结果为大模型提供专业知识支持 |
代码执行节点 | 处理和转换搜索结果,提取关键信息 |
条件分支节点 | 根据搜索结果决定后续流程 |
文本切割节点 | 处理长文本,准备向量存储或搜索 |
向量存储节点 | 与向量搜索配合,实现知识库的更新和检索 |