Как загрузить существующую векторную базу данных в Langchain?
У меня есть следующий код, который загружает мой PDF-файл, генерирует вложения и сохраняет их в векторной базе данных. Затем я могу использовать его для предварительного поиска по нему.
Проблема в том, что каждый раз, когда я запускаю его, вложения обновляются и сохраняются в базе данных вместе с уже созданными.
Я пытаюсь понять, как загрузить существующую векторную базу данных в Langchain. вместо того, чтобы воссоздавать их каждый раз при запуске приложения.
загрузить его
def load_embeddings(store, file):
# delete the dir
# shutil.rmtree(store) # I have to delete it or it just loads double data
loader = PyPDFLoader(file)
text_splitter = CharacterTextSplitter(
separator="\n",
chunk_size=1000,
chunk_overlap=200,
length_function=len,
is_separator_regex=False,
)
pages = loader.load_and_split(text_splitter)
return DocArrayHnswSearch.from_documents(
pages, GooglePalmEmbeddings(), work_dir=store + "/", n_dim=768
)
используй это
db = load_embeddings("linda_store", "linda.pdf")
embeddings = GooglePalmEmbeddings()
query = "Have I worked with Oauth?"
embedding_vector = embeddings.embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector)
for i in range(len(docs)):
print(i, docs[i])
проблема
Это работает нормально, но если я запущу его снова, он просто снова загрузит файл в векторную базу данных. Я хочу, чтобы он просто использовал базу данных после того, как я ее создал, и не создавал ее снова.
Кажется, я не могу найти способ загрузить его, я пробовал
db = DocArrayHnswSearch.load("hnswlib_store/", embeddings)
Но это бесполезно.