Выполнение поиска по сходству во встроенном PDF-файле
Я встроил PDF-файл с помощью вложений OPENAI и сохранил его в локальном файле. По сути, я пытаюсь получить текстовый ввод, например: «кошка» и выполнить поиск по сходству. Я попробовал использовать следующую реализацию:
const embedder = new OpenAIEmbeddings();
const inputEmbedding = await embedder.embedQuery(input_prompt);
const jsonString = fs.readFileSync('./embedded.json', 'utf-8');
const book_embeddings = JSON.parse(jsonString);
const ind = new HNSWLib(275);
for (let i = 0; i < embeddings.length; i++) {
ind.add(embeddings[i], i);
}
const k = 2;
const result = ind.similaritySearch(inputEmbedding, k);
console.log(result);
275 — это длина встроенного списка, представляющего PDF-файл. Когда я запускаю это, я получаю следующую ошибку: «Невозможно прочитать свойства неопределенного значения (чтение «индекса»)». Чего я не понимаю. Та же ошибка возникает, если я просто создаю экземпляр объекта HNSWLib. Это наводит на мысль, что что-то не так с тем, как я импортировал библиотеку. чтобы импортировать его, я использовал:import { HNSWLib } from "langchain/vectorstores/hnswlib";
. Мне удалось заставить его работать, создав векторное хранилище, начиная с необработанного текста PDF, адекватно разделенного на абзацы, что-то вродеconst vectorStore = await HNSWLib.fromTexts()
, за которым следует текст, который вы хотите встроить, и встраивание. Однако это не то, что я ищу, потому что у меня уже есть встраивание PDF-документа. Если бы существовала такая функция, какHNSWLib.fromEmbeddings()
это могло бы сработать, но, к сожалению, этого не существует. Какие-либо предложения? Спасибо
................................................................