Чат із документами
Чат із документами дає Libre WebUI змогу шукати в завантажених документах і передавати релевантні уривки до контексту чату.
Підтримувані файли
- PDF із походженням за сторінками
- Простий текст і журнали
- Markdown (
.md,.markdown,.mdx) із походженням за розділами - HTML
- Word (
.docx) - Презентації (
.pptx) із походженням за слайдами - Таблиці (
.xlsx) із походженням за аркушами та CSV/TSV - Вихідний код TypeScript, Python, Go, Rust, SQL, YAML та інших поширених мов
- Зображення (
.png,.jpg,.webp,.gif) — текст читає налаштована модель комп’ютерного зору (Налаштування → Типові значення → Модель зору) - Аудіо (
.wav,.webm) — транскрибується провайдером мови в текст за тим самим обмеженням STT, що голосове введення - Максимальний розмір: 10 MB
Формати Office розпаковує обмежений парсер у репозиторії; стороння бібліотека документів не працює в серверному процесі. Повторне завантаження однакових байтів у ту саму область дедуплікується.
Зображення й звук спрямовуються до вже налаштованих провайдерів — локальний OCR або мовний рушій не входить до пакета, а інстанцію залишає лише виклик вибраної моделі. PDF без текстового шару обробляється так само: вбудовані JPEG сторінок відновлюються й читаються моделлю зору з походженням за сторінками. Сканування в CCITT fax або JBIG2 усе ще не дають тексту. Без моделі зору чи STT завантаження завершується помилкою з причиною в Налаштування → Документи.
Файли обробляються сервером і зберігаються разом з іншими даними застосунку.
Режими пошуку
| Режим | Коли використовується | Примітки |
|---|---|---|
| Пошук за словами | Завжди доступний | Ранжування BM25 без моделі векторних подань |
| Гібридний пошук | Подання ввімкнено в Налаштуваннях | Поєднує векторне ранжування з BM25 через reciprocal-rank fusion |
Коли подання ввімкнено, кожен запит виконує обидва ранжування й об’єднує їх: точний збіг може випередити семантично схожий, але нечіткий уривок, а фрагменти, для яких подання ще створюється, лишаються доступними лексично. При помилці або вимкненні використовується лише пошук за словами.
Лексичне оцінювання виконується в процесі над доступними фрагментами. Libre навмисно не створює повнотекстовий індекс на диску: текст фрагментів зашифрований, а індекс токенів залишив би відкритий текст поруч. Фрагмент бере участь лише якщо повністю містить хоча б одне слово запиту, тому ідентифікатор ALPHA_BETA_GAMMA не знаходить текст лише за окремою частиною.
Надані вам колекції знань автоматично входять до обох ранжувань. Контроль доступу діє всередині векторного запиту: дозволи публікуються в ACL індексу, тому відкликання приховує документ у наступному пошуку без повторного створення подань.
Увімкнення семантичного пошуку
Установіть модель:
ollama pull nomic-embed-text
Потім увімкніть векторні подання в Налаштуваннях. Можна використовувати локальний Ollama або плагін провайдера.
Типові параметри:
- Модель:
nomic-embed-text - Розмір фрагмента: 1000 символів
- Перекриття: 200 символів
- Поріг подібності: 0.3
Цитування та режим повного документа
Знайдені уривки містять походження: ім’я файлу, індекс фрагмента, оцінку пошуку та, за наявності карти сегментів, сторінку, слайд, аркуш або розділ Markdown. Контекст позначає кожен уривок, а панель «Джерела» перелічує процитовані місця.
У чаті можна ввімкнути режим повного документа на панелі джерел. Тоді надсилається весь видобутий вміст документів області. Обмеження токенів (FULL_DOCUMENT_CONTEXT_MAX_TOKENS, типово 32000) захищає контекст моделі: при перевищенні чат повертається до пошуку й пояснює причину.
Завантаження та пошук
- Завантажте підтримуваний файл.
- Дочекайтеся обробки.
- Поставте запитання в чаті.
- Libre WebUI знайде релевантні фрагменти й додасть як контекст.
Приклади промптів:
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.
Кінцеві точки API
| Кінцева точка | Призначення |
|---|---|
POST /api/documents/upload | Завантажити документ |
GET /api/documents | Перелічити документи |
GET /api/documents/session/:sessionId | Документи сеансу чату |
POST /api/documents/search | Шукати в документах |
DELETE /api/documents/:documentId | Видалити документ |
GET /api/documents/embeddings/status | Стан векторних подань |
POST /api/documents/embeddings/regenerate | Створити подання повторно |
Рекомендації
- Завантажуйте лише матеріали поточного завдання.
- Віддавайте перевагу текстовим PDF; сканування потребує виклику моделі на кожну сторінку.
- Повторно створюйте подання після зміни моделі.
- Зменшуйте поріг, якщо корисний контекст пропускається.
- Збільшуйте його, якщо результати надто шумні.