Trò chuyện với tài liệu
Trò chuyện với tài liệu cho phép Libre WebUI tìm kiếm tài liệu đã tải lên và đưa các đoạn trích liên quan vào ngữ cảnh trò chuyện.
Tệp được hỗ trợ
Các loại tệp hiện được hỗ trợ:
- PDF (có nguồn gốc theo từng trang)
- Văn bản thuần và nhật ký
- Markdown (
.md,.markdown,.mdx, có nguồn gốc theo từng mục) - HTML
- Tài liệu Word (
.docx) - Bản trình bày (
.pptx, có nguồn gốc theo từng slide) - Bảng tính (
.xlsx, có nguồn gốc theo từng trang tính) và CSV/TSV - Mã nguồn (TypeScript, Python, Go, Rust, SQL, YAML và các ngôn ngữ phổ biến khác)
- Hình ảnh (
.png,.jpg,.webp,.gif) — văn bản được đọc bằng mô hình thị giác đã cấu hình (Cài đặt → Mặc định → Mô hình thị giác) - Âm thanh (
.wav,.webm) — được phiên âm qua nhà cung cấp chuyển giọng nói thành văn bản, sau cùng cổng quyền truy cập STT như đầu vào giọng nói - Kích thước tệp tối đa: 10 MB
Định dạng Office được giải nén bằng bộ phân tích có giới hạn trong repository—không có thư viện tài liệu bên thứ ba nào chạy trong tiến trình máy chủ. Việc tải lại các byte giống hệt trong cùng phạm vi sẽ được khử trùng lặp thay vì nhập hai lần.
Việc trích xuất hình ảnh và âm thanh được định tuyến đến các nhà cung cấp bạn đã cấu hình—không có OCR cục bộ hay bộ máy giọng nói đi kèm, và không có gì rời khỏi phiên bản ngoài lệnh gọi đến mô hình bạn chọn. PDF không có lớp văn bản (bản quét) được xử lý tương tự: hình trang JPEG nhúng được khôi phục và đọc qua mô hình thị giác, có nguồn gốc theo từng trang. Bản quét dùng mã hóa hình ảnh khác (fax CCITT, JBIG2) vẫn không tạo ra văn bản; nếu chưa cấu hình mô hình thị giác hoặc nhà cung cấp STT, lượt tải lên bị đánh dấu thất bại và lý do hiển thị trong Cài đặt → Tài liệu.
Tệp được backend xử lý và lưu cùng phần dữ liệu ứng dụng còn lại.
Chế độ tìm kiếm
Libre WebUI hỗ trợ hai chế độ truy xuất:
| Chế độ | Khi sử dụng | Ghi chú |
|---|---|---|
| Tìm theo từ khóa | Luôn khả dụng | Xếp hạng BM25; không cần mô hình embedding |
| Tìm kiếm kết hợp | Đã bật embedding trong Cài đặt | Kết hợp xếp hạng vector với BM25 bằng reciprocal-rank fusion |
Khi bật embedding, mỗi truy vấn chạy cả hai cách xếp hạng rồi hợp nhất: một thuật ngữ khớp chính xác có thể đứng trên đoạn tương tự về ngữ nghĩa nhưng mơ hồ hơn, còn các đoạn có embedding đang được tạo vẫn có thể tìm thấy qua phía từ vựng. Nếu embedding thất bại hoặc bị tắt, tìm kiếm tài liệu quay về khớp từ khóa thuần túy.
Điểm từ vựng được tính trong tiến trình trên các đoạn bạn có quyền truy cập. Libre chủ ý không duy trì chỉ mục toàn văn trên đĩa cho các đoạn tài liệu, vì văn bản đoạn được lưu mã hóa và chỉ mục token sẽ lưu văn bản thuần cạnh bản mã. Một đoạn chỉ đủ điều kiện xếp hạng từ vựng khi chứa đầy đủ ít nhất một từ của truy vấn; vì vậy mã định danh ghép như ALPHA_BETA_GAMMA không bao giờ đưa lên văn bản chỉ chung một phần của nó.
Các bộ sưu tập kiến thức được chia sẻ với bạn tự động tham gia cả hai cách xếp hạng. Kiểm soát truy cập được thực thi ngay trong truy vấn vector—quyền được công bố vào ACL của chỉ mục, nên thu hồi chia sẻ sẽ ẩn các tài liệu đó ngay ở lần tìm kiếm kế tiếp mà không cần tạo lại embedding.
Bật tìm kiếm ngữ nghĩa
Cài đặt mô hình embedding:
ollama pull nomic-embed-text
Sau đó mở Cài đặt và bật embedding. Bạn có thể dùng mô hình embedding Ollama cục bộ hoặc plugin nhà cung cấp hỗ trợ embedding.
Cài đặt embedding mặc định:
- Mô hình:
nomic-embed-text - Kích thước đoạn: 1000 ký tự
- Phần chồng lấn: 200 ký tự
- Ngưỡng tương đồng: 0.3
Trích dẫn và chế độ toàn bộ tài liệu
Đoạn trích truy xuất mang thông tin nguồn gốc: tên tệp nguồn, chỉ số đoạn, điểm truy xuất và—với định dạng có ánh xạ phân đoạn—trang, slide, trang tính hoặc mục Markdown chứa đoạn trích. Ngữ cảnh trò chuyện gắn nhãn vị trí đó cho mỗi đoạn, còn thanh Nguồn của cuộc trò chuyện liệt kê các vị trí được trích dẫn dưới từng tài liệu.
Mỗi cuộc trò chuyện cũng có thể chuyển sang chế độ toàn bộ tài liệu từ thanh Nguồn. Thay vì các đoạn trích được truy xuất, toàn bộ nội dung đã trích xuất của mọi tài liệu trong phạm vi được gửi cùng tin nhắn. Bộ bảo vệ token (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, mặc định 32000) bảo vệ cửa sổ ngữ cảnh của mô hình: khi tài liệu đính kèm vượt giới hạn, cuộc trò chuyện quay về truy xuất và thanh Nguồn giải thích lý do.
Tải lên và tìm kiếm
- Tải lên tệp được hỗ trợ từ phần điều khiển tài liệu.
- Chờ xử lý hoàn tất.
- Đặt câu hỏi trong cuộc trò chuyện.
- Libre WebUI truy xuất các đoạn liên quan cho phiên đó và đưa chúng vào làm ngữ cảnh.
Prompt mẫu:
Summarize the uploaded document in five bullets.
What deadlines are mentioned in the PDF?
Find the section that talks about pricing.
Compare the uploaded policy with this proposed change.
Endpoint API
| Endpoint | Mục đích |
|---|---|
POST /api/documents/upload | Tải lên tài liệu được hỗ trợ |
GET /api/documents | Liệt kê tài liệu đã tải lên |
GET /api/documents/session/:sessionId | Liệt kê tài liệu của phiên trò chuyện |
POST /api/documents/search | Tìm kiếm tài liệu |
DELETE /api/documents/:documentId | Xóa tài liệu |
GET /api/documents/embeddings/status | Xem trạng thái embedding |
POST /api/documents/embeddings/regenerate | Tạo lại embedding |
Cách làm tốt nhất
- Chỉ tải lên nội dung phục vụ tác vụ hiện tại.
- Ưu tiên PDF có văn bản; PDF quét hoạt động qua mô hình thị giác nhưng tốn một lệnh gọi mô hình cho mỗi trang.
- Tạo lại embedding sau khi đổi mô hình embedding.
- Hạ ngưỡng tương đồng nếu tìm kiếm ngữ nghĩa bỏ sót ngữ cảnh hữu ích.
- Tăng ngưỡng nếu kết quả có vẻ nhiễu.