Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Meilisearch

设置 Meilisearch 以在 LibreChat 中启用对话搜索

Meilisearch 是一个开源搜索引擎,为 LibreChat 的对话搜索提供支持,增加了全文搜索、容错纠错以及跨历史对话的即时结果显示功能。有关功能概述,请参阅 LibreChat 中的搜索

连接方式

LibreChat 通过几个环境变量使用 HTTP 与 Meilisearch 进行通信。Docker 设置会为您提供一个作为服务运行的 Meilisearch。源码安装则将 LibreChat 指向您自己运行的 Meilisearch 进程。

配置 Meilisearch

默认的 docker-compose.yml 已经包含了 meilisearch 服务,因此你只需要在 .env 文件中启用搜索并设置一个主密钥(master key)即可。

生成一个主密钥 (master key)。 使用任何足够长且随机的字符串(16 字节或以上)。例如:

openssl rand -base64 32

将搜索变量添加到 .env 中。 Compose 文件将 MEILI_HOST 设置为 api 容器的内部服务地址,因此您无需在此处设置主机。请确保主密钥与 meilisearch 服务所使用的密钥保持一致。

SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>

将主密钥传递给 Meilisearch 服务。 捆绑的 meilisearch 服务不会读取 .env 文件,因此请通过 docker-compose.override.yml 添加它。这样可以确保 LibreChat 和 Meilisearch 使用相同的密钥。

services:
  meilisearch:
    environment:
      - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}

请参阅 Docker Override 以了解覆盖文件是如何合并的。

启动堆栈。 Compose 会自动合并覆盖配置,并与 LibreChat 一起启动 Meilisearch。

docker compose up -d

保持端口为内部端口

容器通过内部 Docker 网络连接到 Meilisearch,因此无需将端口 7700 映射到宿主机。将其公开暴露可能会使您的搜索数据面临风险。

配置完成后,LibreChat 会将对话和消息索引到 Meilisearch 中,搜索栏即可返回支持容错处理的全文搜索结果。

环境变量

变量描述
SEARCH启用对话搜索功能。设置为 true
MEILI_HOSTLibreChat 连接 Meilisearch 的 URL。在 Docker 中为 http://meilisearch:7700(由 Compose 设置);从源码运行通常为 http://localhost:7700
MEILI_MASTER_KEY用于 Meilisearch 身份验证的共享密钥。必须与 Meilisearch 启动时使用的密钥一致。
MEILI_NO_ANALYTICS禁用 Meilisearch 的匿名遥测。设置为 true
MEILI_NO_SYNC参见 多节点设置

在多节点设置中禁用同步

如果您以节点集群或多节点部署方式运行 LibreChat,请将 MEILI_NO_SYNC 设置为 true,以便仅由一个实例处理索引。这可以防止跨实例同步数据库文档的冗余操作,并避免由此带来的不必要资源消耗。

MEILI_NO_SYNC=true

重置同步

如果 Meilisearch 数据被删除或损坏,或者 LibreChat 在数据未同步时错误地将其视为已同步(例如在升级 Meilisearch 或删除其数据文件后),请使用重置脚本强制进行完全重新同步。它会重置 MongoDB 中的同步标志,从而触发 LibreChat 在下次启动或同步检查时重新索引所有对话和消息。

运行重置脚本。 使用与您的设置相匹配的命令。

# Local development
npm run reset-meili-sync
 
# Docker (default setup)
docker compose exec api npm run reset-meili-sync
 
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run reset-meili-sync"

重启 LibreChat。 应用程序重启后,重新同步即会开始。

该脚本会将 MongoDB 中所有消息和对话的 _meiliIndex 标志重置为 false,然后报告已重置的文档数量以及剩余待同步的文档数量。

何时使用:

  • 在删除 Meilisearch 数据文件后
  • 当将 Meilisearch 升级到需要重新索引的版本时
  • 当 LibreChat 显示对话已完全同步,但 Meilisearch 缺少数据时
  • 在恢复 MongoDB 备份且没有匹配的 Meilisearch 数据之后

高级同步选项。 重置后,可以通过以下环境变量控制同步行为:

变量默认值描述
MEILI_SYNC_BATCH_SIZE100每批次同步的文档数量。
MEILI_SYNC_DELAY_MS100同步批次之间的延迟,以毫秒为单位。
MEILI_SYNC_THRESHOLD1000触发同步前未同步文档的最小数量。

这篇指南怎么样?