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

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 32

Thê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 -d

Giữ 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 meilisearch

Tạo một master key. Meilisearch có thể tạo một key cho bạn:

./meilisearch --generate-master-key

Sao 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 backend

Duy 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ếnMô tả
SEARCHKích hoạt tính năng tìm kiếm cuộc trò chuyện. Đặt thành true.
MEILI_HOSTURL 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_KEYKhó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_ANALYTICSVô hiệu hóa tính năng đo lường ẩn danh của Meilisearch. Đặt thành true.
MEILI_NO_SYNCXem 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ếnMặc địnhMô tả
MEILI_SYNC_BATCH_SIZE100Số lượng tài liệu được đồng bộ mỗi đợt.
MEILI_SYNC_DELAY_MS100Độ trễ giữa các đợt đồng bộ, tính bằng mili giây.
MEILI_SYNC_THRESHOLD1000Số 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?