Поиск с помощью Jev и Milvus
Векторный поиск находит информацию, связанную с запросом. Создание полезного поискового приложения также предполагает принятие решений: какие фрагменты текста действительно отвечают на вопрос, можно ли повторно использовать предыдущий ответ и достаточно ли у агента доказательств, чтобы прекратить поиск.
Milvus и Jev отвечают за разные части этого рабочего процесса. Milvus хранит вложения и извлекает записи-кандидаты, используя фильтры метаданных для таких ограничений, как версия продукта или область действия базы знаний. Jev оценивает значение извлеченного текста в сравнении с инструкциями. Ваше приложение может использовать его оценки для выбора доказательств или управления следующим этапом поиска.
Что делает Jev?
Запрос к Jev содержит контекст и один или несколько вопросов для оценки. Его типизированные результаты включают выбор из фиксированных вариантов, упорядоченную оценку и вероятность «да/нет». Эти результаты позволяют коду приложения принимать решение без анализа объяснений в свободной форме. При необходимости модель генерации по-прежнему может составить ответ или следующий поисковый запрос.
Например, пользователь спрашивает, как установить Atlas v2. Milvus может ограничить поиск документацией по версии v2 и вернуть похожие фрагменты, касающиеся установки, обновлений и устранения неполадок. Затем Jev оценивает, какие фрагменты объясняют начальную настройку. Приложение передает выбранные доказательства модели, генерирующей ответ.
Распределение обязанностей прост:
- Поиск с помощью Milvus: нахождение кандидатов в рамках требуемых ограничений метаданных.
- Оценка с помощью Jev: оценка этих кандидатов с учетом вопроса и критериев, специфичных для задачи.
- Действия в коде приложения: переупорядочить результаты, отфильтровать контекст, повторно использовать ответ или продолжить поиск.
Некоторые решения принимаются до начала поиска. Jev может выбрать область поиска или оценить поступающие документы до того, как они поступят в коллекцию. Контроль доступа и точные фильтры остаются в ведении приложения.
Изучите сценарии поиска
Коллекция «Поиск с Jev» содержит девять готовых к запуску учебных примеров. В каждом из них используется небольшой синтетический набор данных и демонстрируются найденные записи, оценки и последующие действия.
Выберите более убедительные доказательства
- Переранжируйте результаты поиска: изменяйте порядок документации и воспоминаний агентов-программистов. Воспоминание об ошибке порта ноутбука может напоминать проблему с подключением контейнера; более полезное воспоминание фиксирует фактическое устранение неполадки между контейнером и хостом.
- Фильтрация найденного контекста: после того как Milvus применит фильтр версий, отличайте инструкции по первоначальной установке от фрагментов, касающихся обновления и устранения неполадок.
- Переранжируйте связи в графе: ответьте на вопрос о месте рождения автора книги, выбрав как связь «книга–автор», так и связь «автор–место рождения», а затем сохраните этот порядок при извлечении отрывков из источников.
Управление поиском и повторное использование ответов
- Определение момента прекращения поиска: модель генерации предлагает варианты поиска на основе накопленных данных, в то время как Jev оценивает, можно ли ответить на исходный вопрос. Примеры охватывают прямой ответ, вопрос с двумя промежуточными шагами и недоступный факт, поиск по которому достигает предела без получения ответа.
- Маршрутизация поисковых запросов: выберите поиск по документации, счетам или в памяти, а затем примените соответствующий фильтр Milvus. Запрос, выходящий за пределы области поиска, проходит по отдельному пути.
- Проверка повторного использования семантического кэша: извлеките похожий запрос из кэша, а затем проверьте, удовлетворяет ли его ответ требованиям нового запроса в отношении задачи, языка и контекста.
Улучшение и проверка конвейера знаний
- Отбор документов перед индексированием: отделяйте содержательные операционные рекомендации от рекламных или неполных материалов с помощью отдельных действий по индексированию, проверке и исключению.
- Проверка найденных фрагментов: выявляйте текст, который пытается перенаправить помощника, сохраняя при этом обычные рекомендации по безопасности. Это дополнительный этап проверки, а не гарантия безопасности.
- Оценивайте доказательства поиска: оценивайте релевантность фрагментов, достаточность доказательств и наличие в ответе необоснованных утверждений. В примерах намеренно удаляются доказательства или добавляются необоснованные утверждения, чтобы сделать различие наглядным.
Готовый интерфейс для переранжирования
Milvus Model предоставляет доступ к интерфейсу переранжирования на стороне приложения ( JevRerankFunction): передайте запрос и тексты документов-кандидатов и получите результаты с оценками и исходными индексами, отсортированные по релевантности. Используйте эти индексы для переупорядочивания записей, возвращаемых Milvus.
Интеграция с Jev была включена в основной код. Ознакомьтесь с реализацией и параметрами конструктора для текущего API. Он принимает TYPESAFE_API_KEY, а по умолчанию используется jev-latest. Используйте версию пакета, включающую эту интеграцию.
Текущий оберточный модуль использует подсказку релевантности «утверждение и доказательство». Убедитесь, что этот критерий подходит для вашей задачи. Для пользовательских оценок, таких как совместимость с памятью, остановка или маршрутизация, следуйте инструкциям по ссылкам, используя API TypeSafe напрямую. В инструкциях демонстрируются прямые вызовы API из кода приложения на Python.
Попробуйте с Milvus
Откройте учебник по переранжированию в Colab, чтобы начать с поиска и ранжирования кандидатов. Информацию о локальной настройке и полный список учебников см. в файле README коллекции.
В примерах используется ключ API Gemini для вложений и ключ API TypeSafe для Jev. В учебном пособии по агентскому поиску также используется Gemini для генерации запросов и ответов. Пример текста отправляется этим поставщикам API, и вызовы могут потреблять кредиты.
Учебные материалы по умолчанию запускаются с использованием Milvus Lite и включают варианты подключения к серверу Milvus или облаку Zilliz. Во всех вариантах развертывания применяется одинаковое распределение задач: Milvus извлекает кандидаты, а приложение отправляет соответствующий текст в Jev для оценки.
Рассматривайте примеры как отправную точку для выработки собственных критериев и пороговых значений. Оценка релевантности не гарантирует правильности ответа, а эти небольшие обучающие наборы данных не обеспечивают точности или скорости в производственной среде.
Изучите реализации и результаты оценки
Следующие проекты с открытым исходным кодом применяют эти идеи к более масштабным рабочим процессам поиска. В приведенных ссылках на отчеты объясняются наборы данных, сравнения и ограничения каждого эксперимента.
| Проект | Сценарий поиска | Работа Jev |
|---|---|---|
| MemSearch | Постоянная память в формате Markdown для кодирующих агентов | Реализация Jev · Оценка |
| Векторный граф RAG | Векторный поиск и поиск по графам для многошаговых запросов | Реализация в Jev · Оценка |
| DeepSearcher | Итеративный поиск по закрытым знаниям | Программа для проведения экспериментов · Оценка с остановкой поиска (автономный эксперимент) |
| GPTCache | Повторное использование ответов на совместимые запросы | Реализация Jev · Оценка |
Вклад DeepSearcher заключается в автономном эксперименте с остановкой поиска. Ссылки на другие реализации демонстрируют интеграцию Jev с конкретными задачами. Результаты этих проектов следует рассматривать в контексте их собственной оценки, а не рассматривать как общий эталон.