Как сохранить «цепкость» точек в Qdrant с помощью langchain?
Я пишу приложение на Python, которое должно иметь возможность векторизовать резюме, а затем использовать langchain для ответа на такие вопросы, как «Резюме с наибольшим опытом работы в разработке программного обеспечения» (ни одно резюме не содержит личной информации). Я использовал векторную базу данных Qdrant, работающую локально с помощью Docker. Когда я читаю PDF-файл, мне приходится разбивать его на фрагменты размером примерно в 1000 токенов, что означает, что некоторые резюме могут быть разделены на 10 разных точек в Qdrant. Конечно, я сохраняю метаданные, то есть страницу (страницу исходного PDF-файла с резюме) и источник , который представляет собой полный путь, включая имя файла. После того, как я внедрил все резюме, как мне сформировать запрос НА ПРИМЕР на поиск резюме с наибольшим опытом работы в сфере разработки программного обеспечения?
2 ответа
Проблему, с которой вы столкнулись, нелегко решить с помощью семантического поиска. Чтобы найти наиболее релевантные документы по такому запросу, как « Резюме с наибольшим опытом работы в разработке программного обеспечения », вам необходимо упорядочить набор имеющихся у вас резюме по их опыту, и это похоже на то, что можно решить с помощью генерации SQL-запроса. если вы можете извлечь свои данные в табличный формат.
См.: https://python.langchain.com/docs/use_cases/qa_structured/sql#case-1-text-to-sql-query .
Одно вложение кодирует семантическую информацию определенного фрагмента документа. Предполагая, что есть информация типа « У меня есть десять лет опыта работы разработчиком программного обеспечения », наше встраивание закодирует ее, но это не означает, что предложение « У меня пятнадцать лет опыта работы разработчиком программного обеспечения » будет далеко из первого.
Встраивания могут быть полезны для поиска разработчиков, работающих с похожим стеком, но если вы хотите отсортировать результаты, это невозможно, и вам придется использовать другие средства.
Похоже, вы могли бы попытаться генерировать SQL-запросы на основе запросов пользователя, а не использовать RAG. Семантический поиск не может решить такого рода проблемы. На вопрос «Резюме с наибольшим опытом работы в разработке программного обеспечения» нельзя ответить, используя один документ из вашей коллекции, поскольку это скорее вопрос обо всех документах в целом (наибольший опыт означает, что мы знаем все остальные документы).
Qdrant, с правильной моделью внедрения, может помочь вам найти резюме людей, работающих в конкретных технологиях или с желаемым опытом.