Потому что LLM не "угадывает" ответ, а генерирует его строго на основе фактов, найденных через поиск по смыслу из базы знаний.
- силу поиска по смыслу векторной БД (Qdrant),
- точность формулировок LLM (Mistral).
В ходе эксперимента будет один том же запрос к разным источникам:
- запрос к БД Qdrant
- запрос к RAG (БД Qdrant + LLM Mistral)
- только к LLM Mistral
Как создать dblink с использованием FOREIGN DATA WRAPPER
примечание: правильный ответ в файлах: 03.txt и 13.txt (наилучшее совпадение)
1. Qdrant — векторная база данных
2. SentenceTransformer — компонент ИИ (эмбеддер), который преобразует текст в вектора смыслов. EMBEDDING MODEL: sentence-transformers/paraphrase-multilingual-mpnet-base-v2
3. Mistral — локальная большая языковая модель (LLM)
4. ./texts - каталог с небольшими записками (база знаний)
5. Web-интерфейс LLM Mistral
07.txt; «Ограничения (Constraints) в PostgreSQL».
08.txt; «Введение в архитетуру PostgreSQL».
09.txt; «Расширение pg_hint_plan».
10.txt; «Расширение pg_pathman».
11.txt; «Секционированные таблиц в PostgreSQL».
12.txt; «Индексы в PostgreSQL».
13.txt; «Использование postgres_fdw для dblink между базами PostgreSQL»
14.txt; «Настройка производительности PostgreSQL»
Шаг 1. Библиотека SentenceTransformer обрабатывает все тестовые файлы входного каталога.
Содержимое каждого файлов преобразуется в вектор смысла.
Формируется коллекция для быстрого поиска по смыслу.
Шаг 3. Повторяется выполнение шага 2, найденные фразы объединяются в prompt и направляются в LLM (Mistral).
Шаг 4. Пользователь задает вопрос и получить ответ напрямую к Mistral.
Шаг 5. Заключительно слово
Шаг 1. Библиотека SentenceTransformer обрабатывает все тестовые файлы входного каталога. Содержимое каждого файла преобразуется в вектор смыслового представления с помощью модели.
2. Каждый такой вектор - это точка в 768-мерном пространстве, где близкие по смыслу тексты располагаются рядом.
3. Если файл слишком длинный (более ~1000 слов), модель обрезает его до первых ~512 токенов - часть смысла может быть потеряна.
4. Вектор сохраняется в Qdrant вместе с исходным текстом и именем файла.
- «Как создать подключение между двумя базами PostgreSQL?»- «Какие есть способы соединить две PostgreSQL базы?»
- «Вчера было солнечно и жарко.»
- мультиязычная, обучена на более чем 50 языках.
- области применения: сравнение смысловой близости, семантический поиск, кластеризация.
- оптимальный размер обрабатываемого текста: 50–400 слов.
- максимальный рекомендуемый размер: до 1000 слов (≈ 512 токенов), чтобы сохранить смысловую полноту.
- если необходимо обработать большие тексты - рекомендуется разбивать их на абзацы или предложения и индексировать по частям.
- Qdrant; Rust + gRPC, поддержка фильтрации, payload, fast- Pinecone; Облачная, высокоуровневая, простая в использовании- Weaviate; Встроенный GraphQL + автогенерация embedding'ов- FAISS (Meta); Быстрая, локальная, но без поддержки метаданных- Milvus; Распределённая, с масштабируемостью и SQL-интерфейсом- Chroma; Python-native, simple API, идеально для RAG
Шаг 2. Выполнение запроса в базе данных Qdrant, сформированного из вопроса Пользователя. Qdrant возвращает наиболее близкие по смыслу фразы. (см. Рис. 2 приложения)
- для каждого подходящего фрагмента выводится имя исходного файла, значение score, и первые строки текста.
- в конце выводится агрегированный список файлов, отсортированный по убыванию score.
- score — численная метрика смыслового сходства между вектором запроса и вектором фрагмента текста.
- диапазон: от 0 (нет сходства) до 1 (полное совпадение).
- значения score ≥ 0.7 обычно указывают на высокую релевантность.
- на шаге 2 реализуется поиск по смыслу, а не по ключевым словам.
- Qdrant находит и возвращает фрагменты текста, наиболее подходящие по содержанию к заданному вопросу.
- этот шаг позволяет быстро ориентироваться в больших объёмах неструктурированной информации, находя нужное без точного совпадения слов.
Шаг 3. Повторяется выполнение шага 2, найденные фразы объединяются в prompt и направляются в LLM (Mistral). Модель генерирует числовую оценку релевантности на основе содержимого фрагмента. (см. Рис. 3 приложения)
1. Пользователь вводит вопрос, аналогично шагу 2.
- исходный вопрос пользователя,
- фрагмент текста, найденный в Qdrant,
- указание LLM: «Оцени, насколько данный фрагмент помогает ответить на вопрос. Ответь числом от 0% до 100%.»
- имя файла,
- score от Qdrant (смысловое сходство),
- оценка от LLM (насколько данный фрагмент полезен для ответа на вопрос).
Ответ от Mistral:
- модель не отвечает на вопрос прямо, а оценивает релевантность конкретного фрагмента - насколько он может быть полезен для ответа.
- оценка в процентах позволяет отсечь слабые фрагменты и отобрать только те, что действительно содержат ответ.
Профит:
- Повышение точности семантического поиска — не только по векторному сходству (Qdrant), но и с участием LLM-эксперта.
- Ранжирование по смыслу, основанное на интерпретации контекста моделью.
LLM (Mistral 7B) используется как оценщик качества найденных фрагментов, обеспечивая более точный отбор информации.
Результат — оценка релевантности, позволяющая ранжировать фрагменты с учётом как сходства по эмбеддингу, так и смысловой насыщенности контекста.
1. Пользователь вручную открывает веб-интерфейс Mistral в браузере и вводит свой вопрос в текстовое поле.
Пример: «Как создать dblink между двумя базами PostgreSQL?»
2. Вопрос обрабатывается моделью mistral-small-latest, размещённой на сервере Mistral.ai.
Модель использует свой предобученный контекст, внутренние знания, полученные на большом массиве текстов.
3. Ответ формируется в реальном времени, на основе языковых закономерностей и знаний, содержащихся в модели.
Результат — связный, полный и осмысленный ответ, не зависящий от локальной базы или внешнего источника.
- Проверить, насколько полно и корректно LLM отвечает без доступа к базе знаний.
- Сравнить качество zero-shot-ответа с результатами шагов 2 и 3, где использовался дополнительный контекст.
- Выявить границы применения чистой модели без retrieval-этапа.
Пользователь получает ответ, сформулированный исключительно на основе внутренней памяти модели, без доступа к локальной информации.
Этот шаг является ключевым для оценки качества ответов LLM в изолированном режиме и сравнения с результатами на базе retrieval-augmented generation (RAG).
В рамках эксперимента были протестированы три режима генерации ответов:
1. Qdrant-only:
- cистема возвращает фрагменты исходных текстов, наиболее близкие по смыслу к пользовательскому запросу.
- пользователь самостоятельно анализирует эти фрагменты и находит ответ.
- этот режим не использует генерацию, но даёт высокую прозрачность и контроль над источником информации.
- найденные в Qdrant фрагменты объединяются в единый контекст, который передаётся в языковую модель Mistral 7B.
– модель получает строгую инструкцию использовать только предоставленный контекст для генерации ответа.
– это позволяет минимизировать риск искажений и получить точный, фактологически обоснованный результат.
– данный режим показал наивысшую точность и достоверность.
- запрос направляется напрямую в языковую модель (через веб-интерфейс Mistral), без использования внешнего контекста.
- ответ строится исключительно на базе знаний, полученных в ходе обучения.
- такой режим демонстрирует высокую связность, но подвержен риску генерации недостоверной информации (галлюцинаций), особенно при недостатке специфических данных в обучающей выборке.
- ключевым компонентом всей системы является эмбеддер - модель, преобразующая тексты в смысловые векторы.
- правильно подобранный эмбеддер обеспечивает точное смысловое сопоставление запросов и документов, что критично для качества поиска.
- неподходящая модель векторизации может привести к снижению релевантности, и, как следствие, к ухудшению итогового ответа даже при использовании LLM.
- эффективность семантического поиска по базе знаний (через Qdrant и SentenceTransformer),
- и генеративные возможности LLM (Mistral 7B), строго ограниченной внешним контекстом.
RAG-модель в этом эксперименте доказала свою пригодность для задач, требующих интерпретируемых, обоснованных и достоверных ответов.
Рисунок 1. Пример отчета работы скриптов удаления и
создания коллекции векторов файлов
Итого: загружено в Qdrant 14 файлов за 0.06 минут
Рисунок 2. Пример отчета работы скрипты скрипта
поиска по БД Qdrant
Итого: Qdrant в ответ на запрос вернул 8 файлов, которые с разным Score подходят под наш запрос
Итого: LLM Mistral в первом случае с 80% точной подтвердила релевантность ответа, а в двух последних ответах – не подтвердила.
No comments:
Post a Comment