AI 搜索
使用聊天的对话式搜索
学习如何使用 Meilisearch 的聊天功能实现 AI 驱动的对话式搜索
Meilisearch 的聊天补全功能实现了基于 AI 的对话式搜索,允许用户用自然语言提问并基于索引内容获取直接答案。该功能将传统搜索体验转变为交互式对话。
聊天补全功能目前处于实验阶段,必须通过实验性功能启用。API 规范可能在未来的版本中发生变化。
什么是对话式搜索?
对话式搜索允许用户:
- 使用自然语言提问而非关键词
- 获取直接答案而非文档链接
- 在多个问题间保持上下文
- 获得基于实际内容的响应
这种方式弥合了传统搜索与现代 AI 体验之间的鸿沟,使信息获取更加直观便捷。
聊天补全与传统搜索的区别
传统搜索流程
- 用户输入关键词
- Meilisearch 返回匹配文档
- 用户浏览结果寻找答案
对话式搜索流程
- 用户用自然语言提问
- Meilisearch 检索相关文档
- AI 基于文档生成直接答案
- 用户可以继续追问后续问题
简化版 RAG 实现
聊天补全功能在单一 API 端点中实现了完整的检索增强生成(RAG)流程。传统的 RAG 实现需要:
- 多次 LLM 调用来优化查询
- 单独的向量数据库进行语义搜索
- 自定义的重排序方案
- 复杂的流程管理
Meilisearch 的聊天补全功能将这些整合为一个精简流程:
- 查询理解:自动将问题转化为最优搜索参数
- 混合检索:结合关键词和语义搜索提升相关性
- 答案生成:使用您选择的 LLM 生成回答
- 上下文管理:自动维护对话历史
何时使用聊天补全 vs 传统搜索
适合使用对话式搜索的场景:
- 用户需要针对特定问题获得直接答案
- 内容属于信息类(文档、知识库、常见问题)
- 用户会进行后续提问
- 自然语言交互能提升用户体验
适合使用传统搜索的场景:
- 用户需要浏览多个选项
- 结果需要比较(电商商品、列表)
- 精确匹配至关重要
- 响应时间是首要考虑因素
架构概览
聊天补全功能通过工作区(workspace)运行,这是为不同用例或租户提供的隔离配置。每个工作区可以:
- 使用不同的 LLM 来源(openAi、azureOpenAi、mistral、gemini、vLlm)
- 应用自定义提示词
- 基于 API 密钥访问特定索引
- 维护独立的对话上下文
核心组件
-
聊天端点:
/chats/{workspace}/chat/completions
- 兼容 OpenAI 的接口规范
- 支持流式响应
- 处理索引搜索的工具调用
-
工作区设置:
/chats/{workspace}/settings
- 配置 LLM 提供商和模型
- 设置系统提示词
- 管理 API 凭证
-
索引集成:
- 自动搜索相关索引
- 利用现有 Meilisearch 搜索能力
- 遵循 API 密钥权限
安全考量
聊天补全功能与 Meilisearch 现有安全模型深度集成:
- API 密钥权限:聊天功能仅能访问当前 API 密钥可见的索引
- 租户令牌:支持多租户应用场景
- LLM 凭证:安全存储在工作区设置中
- 内容隔离:响应仅基于已索引内容生成