Meilisearch
设置 Meilisearch 以在 LibreChat 中启用对话搜索
Meilisearch 是一个开源搜索引擎,为 LibreChat 的对话搜索提供支持,增加了全文搜索、容错纠错以及跨历史对话的即时结果显示功能。有关功能概述,请参阅 LibreChat 中的搜索。
连接方式
LibreChat 通过几个环境变量使用 HTTP 与 Meilisearch 进行通信。Docker 设置会为您提供一个作为服务运行的 Meilisearch。源码安装则将 LibreChat 指向您自己运行的 Meilisearch 进程。
配置 Meilisearch
默认的 docker-compose.yml 已经包含了 meilisearch 服务,因此你只需要在 .env 文件中启用搜索并设置一个主密钥(master key)即可。
生成一个主密钥 (master key)。 使用任何足够长且随机的字符串(16 字节或以上)。例如:
将搜索变量添加到 .env 中。 Compose 文件将 MEILI_HOST 设置为 api 容器的内部服务地址,因此您无需在此处设置主机。请确保主密钥与 meilisearch 服务所使用的密钥保持一致。
将主密钥传递给 Meilisearch 服务。 捆绑的 meilisearch 服务不会读取 .env 文件,因此请通过 docker-compose.override.yml 添加它。这样可以确保 LibreChat 和 Meilisearch 使用相同的密钥。
请参阅 Docker Override 以了解覆盖文件是如何合并的。
启动堆栈。 Compose 会自动合并覆盖配置,并与 LibreChat 一起启动 Meilisearch。
保持端口为内部端口
容器通过内部 Docker 网络连接到 Meilisearch,因此无需将端口 7700 映射到宿主机。将其公开暴露可能会使您的搜索数据面临风险。
配置完成后,LibreChat 会将对话和消息索引到 Meilisearch 中,搜索栏即可返回支持容错处理的全文搜索结果。
环境变量
| 变量 | 描述 |
|---|---|
SEARCH | 启用对话搜索功能。设置为 true。 |
MEILI_HOST | LibreChat 连接 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,以便仅由一个实例处理索引。这可以防止跨实例同步数据库文档的冗余操作,并避免由此带来的不必要资源消耗。
重置同步
如果 Meilisearch 数据被删除或损坏,或者 LibreChat 在数据未同步时错误地将其视为已同步(例如在升级 Meilisearch 或删除其数据文件后),请使用重置脚本强制进行完全重新同步。它会重置 MongoDB 中的同步标志,从而触发 LibreChat 在下次启动或同步检查时重新索引所有对话和消息。
运行重置脚本。 使用与您的设置相匹配的命令。
重启 LibreChat。 应用程序重启后,重新同步即会开始。
该脚本会将 MongoDB 中所有消息和对话的 _meiliIndex 标志重置为 false,然后报告已重置的文档数量以及剩余待同步的文档数量。
何时使用:
- 在删除 Meilisearch 数据文件后
- 当将 Meilisearch 升级到需要重新索引的版本时
- 当 LibreChat 显示对话已完全同步,但 Meilisearch 缺少数据时
- 在恢复 MongoDB 备份且没有匹配的 Meilisearch 数据之后
高级同步选项。 重置后,可以通过以下环境变量控制同步行为:
| 变量 | 默认值 | 描述 |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | 每批次同步的文档数量。 |
MEILI_SYNC_DELAY_MS | 100 | 同步批次之间的延迟,以毫秒为单位。 |
MEILI_SYNC_THRESHOLD | 1000 | 触发同步前未同步文档的最小数量。 |
这篇指南怎么样?