Как использовать векторный поиск, чтобы найти подходящую комбинацию векторов?

**Я хочу сопоставить запрос пользователя с комбинацией элементов из базы данных. Если точного совпадения нет, я хочу вернуть ближайшую возможную комбинацию. В каждой комбинации должен быть 1 предмет и 0 или более вариантов. **

Пример: пользовательский запрос: «большая пицца пепперони с оливками».

В базе данных есть строка с вектором для названия элемента «пицца». Также есть строки для опций «пепперони», «оливки», «колбаска», «размер: большой» и т. д.

Возвращаемая комбинация должна быть «Товар: пицца. Варианты: пепперони, оливки, размер: большой».

Что я пробовал

После внедрения пользовательского запроса я выполняю векторный поиск в базе данных. Я получаю список элементов и опций, отсортированный по косинусному расстоянию. В настоящее время он возвращает 3 элемента и 3 варианта.

Пока все хорошо. Но теперь, когда у меня есть результаты, как мне создать комбинацию, соответствующую запросу пользователя? Я мог бы попробовать повторно внедрить различные комбинации и сравнить их с исходным запросом, но я предполагаю, что это будет экспоненциально дорого и медленно.

Примечания

  • Я использую SBERT all-MiniLM-L6-v2 и pgvector.
  • Готов использовать полнотекстовый поиск, но хотел бы сохранить возможность предоставлять рекомендации, если точного совпадения нет.

0 ответов

Другие вопросы по тегам