Как загрузить существующую векторную базу данных в 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)

Но это бесполезно.

0 ответов

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