Инструмент VectorStore
Инструмент VectorStore позволяет AI-ассистенту искать информацию для ответа в ваших файлах (базе знаний). При работе с инструментом VectorStore вы можете использовать специально обученную модель перефразирования запросов пользователей, чтобы повысить качество поиска.
Чтобы AI-ассистент мог использовать вашу базу знаний:
- Загрузите файлы базы знаний с помощью API или ML SDK.
- Создайте поисковый индекс для файлов. После этого вы можете удалить загруженные файлы, если ссылки на источники вам не нужны.
- Подключите поисковый индекс к ассистенту. Вы можете включить отображение ссылок на источники, если файлы поискового индекса не удалены.
- Если нужно, настройте стратегию обращения к поисковым индексам, чтобы ассистент обращался к ним только тогда, когда это действительно необходимо.
- Если нужно, включите модель перефразирования как дополнительный слой ассистента.
По умолчанию инструмент VectorStore обращается к индексу при каждом запросе пользователя к ассистенту. Инструмент находит и возвращает подходящие фрагменты исходных файлов, а генеративная модель использует найденную информацию при формировании ответа.
Вместе с тем обращаться к поисковому индексу при ответе на запрос пользователя AI-ассистенту требуется далеко не всегда — для ответов на многие вопросы достаточно базовой информации, имеющейся у модели. При настройке ассистента вы можете задать стратегию обращения к инструменту VectorStore, чтобы модель ассистента самостоятельно определяла, когда необходимо использовать индекс для поиска информации.
Чтобы AI-ассистент мог использовать инструмент VectorStore со стратегией обращения к этому инструменту:
В ML SDK передайте инструкцию для модели по обращению к поисковому индексу в параметре call_strategy
при создании инструмента VectorStore. Затем при создании AI-ассистента передайте полученный объект с инструментом VectorStore в параметре tools
.
...
tool = sdk.tools.search_index(
search_index,
call_strategy={
"type": "function",
"function": {"name": "search-function-name", "instruction": "<инструкция_по_использованию_поиска>"},
},
)
assistant = sdk.assistants.create(
"yandexgpt",
instruction = "Ты — помощник по внутренней документации компании. Отвечай вежливо. Если информация не содержится в документах ниже, не придумывай ответ.",
tools=[tool])
thread = sdk.threads.create()
...
В API при создании или изменении AI-ассистента передайте инструкцию для модели по обращению к поисковому индексу в массиве tools
тела запроса в объекте callStrategy
.
{
...
"tools": [
{
"searchIndex": {
"searchIndexIds": [
"<идентификатор_поискового_индекса>"
],
"maxNumResults": "<максимальное_число_возвращаемых_фрагментов>",
"callStrategy": {
"autoCall": {
"instruction": "<инструкция_по_использованию_поиска>"
}
}
}
}
]
}
Где:
searchIndexIds
— массив идентификаторов поисковых индексов, которые будет использовать ассистент. В настоящее время можно указать только один индекс.maxNumResults
— максимальное количество результатов, которое может вернуть поиск.instruction
— инструкция по использованию поиска с подсказкой для ассистента, в каких случаях требуется обращаться к поисковому индексу.
Инструкция по использованию поиска, заданная в стратегии, представляет собой промт, который подсказывает ассистенту, в каких случаях требуется обращаться к поисковому индексу. Например:
"instruction": "Выполняй поиск по базе знаний только в тех случаях, когда пользователь тебя специально об этом попросит."