Meilisearch
Thiết lập Meilisearch để bật tính năng tìm kiếm hội thoại trong LibreChat
Meilisearch là một công cụ tìm kiếm mã nguồn mở hỗ trợ tính năng tìm kiếm hội thoại của LibreChat, bổ sung khả năng tìm kiếm toàn văn, chịu lỗi chính tả và hiển thị kết quả tức thì trên các cuộc hội thoại trước đây. Để biết tổng quan về tính năng, hãy xem Search in LibreChat.
Cách thức kết nối
LibreChat giao tiếp với Meilisearch qua HTTP bằng cách sử dụng một vài biến môi trường. Thiết lập Docker cung cấp sẵn Meilisearch như một dịch vụ cho bạn. Đối với cài đặt từ mã nguồn, bạn cần trỏ LibreChat đến một tiến trình Meilisearch do chính bạn chạy.
Cấu hình Meilisearch
Tệp docker-compose.yml mặc định đã bao gồm một dịch vụ meilisearch, vì vậy bạn chỉ cần bật tính năng tìm kiếm và thiết lập khóa chính (master key) trong tệp .env của mình.
Tạo một master key. Sử dụng bất kỳ chuỗi ngẫu nhiên nào đủ dài (16 byte trở lên). Ví dụ:
openssl rand -base64 32Thêm các biến tìm kiếm vào .env. Tệp Compose đặt MEILI_HOST thành địa chỉ dịch vụ nội bộ cho container api, vì vậy bạn không cần thiết lập host tại đây. Hãy giữ khóa chính (master key) giống hệt với khóa mà dịch vụ meilisearch sử dụng.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_MASTER_KEY=<your_master_key>Chuyển khóa chính (master key) cho dịch vụ Meilisearch. Dịch vụ meilisearch đi kèm không đọc tệp .env, vì vậy hãy thêm nó thông qua docker-compose.override.yml. Việc này giúp cả LibreChat và Meilisearch sử dụng cùng một khóa.
services:
meilisearch:
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}Xem Docker Override để biết cách các tệp ghi đè được hợp nhất.
Khởi chạy stack. Compose sẽ tự động hợp nhất các ghi đè và khởi chạy Meilisearch cùng với LibreChat.
docker compose up -dGiữ cổng ở chế độ nội bộ
Các container kết nối với Meilisearch thông qua mạng Docker nội bộ, vì vậy không cần phải mở cổng 7700 ra máy chủ host. Việc công khai cổng này có thể khiến dữ liệu tìm kiếm của bạn gặp rủi ro.
Khi bạn chạy LibreChat từ mã nguồn, hãy chạy tệp nhị phân Meilisearch như một tiến trình riêng biệt và trỏ LibreChat đến đó.
Tải xuống Meilisearch. Lấy bản phát hành mới nhất cho hệ điều hành của bạn từ trang phát hành Meilisearch, ví dụ: meilisearch-linux-amd64.tar.gz (Linux), meilisearch-macos-amd64 (macOS), hoặc meilisearch-windows-amd64.zip (Windows). Giải nén nó vào một thư mục tùy chọn của bạn. Đối với cài đặt qua trình quản lý gói, hãy xem hướng dẫn cài đặt Meilisearch.
Làm cho tệp nhị phân có thể thực thi (Linux/macOS). Từ thư mục nơi bạn đã giải nén tệp:
chmod +x meilisearchTạo một master key. Meilisearch có thể tạo một key cho bạn:
./meilisearch --generate-master-keySao chép khóa đã tạo; bạn sẽ sử dụng lại nó trong các bước tiếp theo.
Khởi chạy Meilisearch. Chạy nó với master key của bạn. Nó sẽ lắng nghe trên cổng 7700 theo mặc định.
./meilisearch --master-key=<your_master_key>Thêm các biến tìm kiếm vào .env. Trỏ MEILI_HOST đến tiến trình Meilisearch và sử dụng cùng khóa chính (master key) mà bạn đã thiết lập ở trên.
SEARCH=true
MEILI_NO_ANALYTICS=true
MEILI_HOST=http://localhost:7700
MEILI_MASTER_KEY=<your_master_key>Khởi động LibreChat. Khởi động hoặc khởi động lại ứng dụng để nó nhận cấu hình mới.
npm run backendDuy trì trạng thái chạy của Meilisearch
Tính năng tìm kiếm cuộc trò chuyện chỉ hoạt động khi Meilisearch đang chạy. Hãy chạy nó dưới dạng dịch vụ được quản lý hoặc container để đảm bảo nó luôn hoạt động sau mỗi lần khởi động lại.
Sau khi được cấu hình, LibreChat sẽ lập chỉ mục các cuộc trò chuyện và tin nhắn vào Meilisearch, và thanh tìm kiếm sẽ trả về kết quả toàn văn bản với khả năng chịu lỗi chính tả.
Các biến môi trường
| Biến | Mô tả |
|---|---|
SEARCH | Kích hoạt tính năng tìm kiếm cuộc trò chuyện. Đặt thành true. |
MEILI_HOST | URL nơi LibreChat kết nối với Meilisearch. Trong Docker, đây là http://meilisearch:7700 (được thiết lập bởi Compose); từ mã nguồn, thường là http://localhost:7700. |
MEILI_MASTER_KEY | Khóa bí mật dùng để xác thực với Meilisearch. Phải khớp với khóa mà Meilisearch sử dụng khi khởi động. |
MEILI_NO_ANALYTICS | Vô hiệu hóa tính năng đo lường ẩn danh của Meilisearch. Đặt thành true. |
MEILI_NO_SYNC | Xem thiết lập đa nút. |
Tắt đồng bộ trong thiết lập đa nút (Multi-node)
Nếu bạn chạy LibreChat dưới dạng cụm node hoặc triển khai đa node, hãy đặt MEILI_NO_SYNC thành true để chỉ một instance xử lý việc lập chỉ mục. Điều này giúp ngăn chặn việc đồng bộ hóa dư thừa các tài liệu cơ sở dữ liệu giữa các instance và tránh việc sử dụng tài nguyên không cần thiết đi kèm với nó.
MEILI_NO_SYNC=trueĐặt lại đồng bộ hóa
Nếu dữ liệu Meilisearch bị xóa hoặc bị hỏng, hoặc nếu LibreChat coi mọi thứ đã được đồng bộ hóa trong khi thực tế không phải vậy (ví dụ: sau khi nâng cấp Meilisearch hoặc xóa các tệp dữ liệu của nó), hãy sử dụng tập lệnh reset để buộc đồng bộ hóa lại toàn bộ. Tập lệnh này sẽ đặt lại các cờ đồng bộ hóa trong MongoDB, từ đó kích hoạt LibreChat lập chỉ mục lại tất cả các cuộc hội thoại và tin nhắn trong lần khởi động hoặc kiểm tra đồng bộ hóa tiếp theo.
Chạy tập lệnh đặt lại (reset script). Sử dụng lệnh phù hợp với thiết lập của bạn.
# 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"Khởi động lại LibreChat. Quá trình đồng bộ hóa lại sẽ bắt đầu ngay khi ứng dụng khởi động lại.
Tập lệnh này đặt lại cờ _meiliIndex thành false cho tất cả các tin nhắn và cuộc trò chuyện trong MongoDB, sau đó báo cáo số lượng tài liệu đã được đặt lại và số lượng tài liệu còn lại cần đồng bộ hóa.
Khi nào nên sử dụng:
- Sau khi xóa các tệp dữ liệu Meilisearch
- Khi nâng cấp Meilisearch lên một phiên bản yêu cầu lập chỉ mục lại (reindexing)
- Khi LibreChat hiển thị các cuộc trò chuyện đã được đồng bộ hóa hoàn toàn nhưng Meilisearch lại bị thiếu dữ liệu
- Sau khi khôi phục bản sao lưu MongoDB mà không có dữ liệu Meilisearch tương ứng
Các tùy chọn đồng bộ nâng cao. Sau khi đặt lại, hãy kiểm soát hành vi đồng bộ bằng các biến môi trường sau:
| Biến | Mặc định | Mô tả |
|---|---|---|
MEILI_SYNC_BATCH_SIZE | 100 | Số lượng tài liệu được đồng bộ mỗi đợt. |
MEILI_SYNC_DELAY_MS | 100 | Độ trễ giữa các đợt đồng bộ, tính bằng mili giây. |
MEILI_SYNC_THRESHOLD | 1000 | Số lượng tài liệu chưa đồng bộ tối thiểu trước khi kích hoạt đồng bộ. |
Hướng dẫn này thế nào?