Meilisearch 的聊天补全功能实现了基于 AI 的对话式搜索,允许用户用自然语言提问并基于索引内容获取直接答案。该功能将传统搜索体验转变为交互式对话。

聊天补全功能目前处于实验阶段,必须通过实验性功能启用。API 规范可能在未来的版本中发生变化。

什么是对话式搜索?

对话式搜索允许用户:

  • 使用自然语言提问而非关键词
  • 获取直接答案而非文档链接
  • 在多个问题间保持上下文
  • 获得基于实际内容的响应

这种方式弥合了传统搜索与现代 AI 体验之间的鸿沟,使信息获取更加直观便捷。

聊天补全与传统搜索的区别

传统搜索流程

  1. 用户输入关键词
  2. Meilisearch 返回匹配文档
  3. 用户浏览结果寻找答案

对话式搜索流程

  1. 用户用自然语言提问
  2. Meilisearch 检索相关文档
  3. AI 基于文档生成直接答案
  4. 用户可以继续追问后续问题

简化版 RAG 实现

聊天补全功能在单一 API 端点中实现了完整的检索增强生成(RAG)流程。传统的 RAG 实现需要:

  • 多次 LLM 调用来优化查询
  • 单独的向量数据库进行语义搜索
  • 自定义的重排序方案
  • 复杂的流程管理

Meilisearch 的聊天补全功能将这些整合为一个精简流程:

  1. 查询理解:自动将问题转化为最优搜索参数
  2. 混合检索:结合关键词和语义搜索提升相关性
  3. 答案生成:使用您选择的 LLM 生成回答
  4. 上下文管理:自动维护对话历史

何时使用聊天补全 vs 传统搜索

适合使用对话式搜索的场景:

  • 用户需要针对特定问题获得直接答案
  • 内容属于信息类(文档、知识库、常见问题)
  • 用户会进行后续提问
  • 自然语言交互能提升用户体验

适合使用传统搜索的场景:

  • 用户需要浏览多个选项
  • 结果需要比较(电商商品、列表)
  • 精确匹配至关重要
  • 响应时间是首要考虑因素

架构概览

聊天补全功能通过工作区(workspace)运行,这是为不同用例或租户提供的隔离配置。每个工作区可以:

  • 使用不同的 LLM 来源(openAi、azureOpenAi、mistral、gemini、vLlm)
  • 应用自定义提示词
  • 基于 API 密钥访问特定索引
  • 维护独立的对话上下文

核心组件

  1. 聊天端点: /chats/{workspace}/chat/completions

    • 兼容 OpenAI 的接口规范
    • 支持流式响应
    • 处理索引搜索的工具调用
  2. 工作区设置: /chats/{workspace}/settings

    • 配置 LLM 提供商和模型
    • 设置系统提示词
    • 管理 API 凭证
  3. 索引集成:

    • 自动搜索相关索引
    • 利用现有 Meilisearch 搜索能力
    • 遵循 API 密钥权限

安全考量

聊天补全功能与 Meilisearch 现有安全模型深度集成:

  • API 密钥权限:聊天功能仅能访问当前 API 密钥可见的索引
  • 租户令牌:支持多租户应用场景
  • LLM 凭证:安全存储在工作区设置中
  • 内容隔离:响应仅基于已索引内容生成

后续步骤