как заставить PrivateGPT получать информацию только из локальных документов?

Я использую PrivateGPT со стандартной моделью GPT4All (ggml-gpt4all-j-v1.3-groovy.bin), а также с последней версией Falcon. Моя проблема в том, что я ожидал получить информацию только из местных документов, а не из того, что модель уже «знает».

Пример . Если единственным локальным документом является справочное руководство к программному обеспечению, я ожидал, что PrivateGPT не сможет ответить на вопрос типа: «Какая столица Германии?» или «Что такое яблоко?» потому что этого чего-то нет в самом локальном документе.

PrivateGPT использует локальное векторное хранилище Chroma для хранения вложений из локальных документов. Ретривер langchain не должен получать информацию только от них? что мне не хватает?

2 ответа

Ответ Privategpt состоит из трех компонентов (1) интерпретировать вопрос (2) получить источник из местных справочных документов и (3) использовать оба местных исходных документа + то, что он уже знает, для генерации ответа в виде человеческого ответа.

Вы можете отключить (3), закомментировав несколько строк, показанных ниже в исходном коде, и определив

      docs = db.as_retriever(search_type="similarity", search_kwargs={"k":5}).get_relevant_documents(query)

как показано ниже. Вы можете настроить параметр{"k":5}чтобы получить 5 или любое количество перечисленных источников.

Недостаток заключается в том, что если вы выполните вышеуказанные шаги, Privategpt выполнит только (1) и (2), но не сгенерирует окончательный ответ в виде человеческого ответа. Таким образом, по сути, Privategpt будет действовать как средство получения информации, где он будет перечислять только соответствующие источники из ваших местных документов.

Измененный код

      while True:
    query = input("\nEnter a query: ")
    if query == "exit":
        break

    # Get the answer from the chain
    ####res = qa(query)
    ####answer, ####
    docs = db.as_retriever(search_type="similarity", search_kwargs={"k":5}).get_relevant_documents(query)

    # # Print the result
    # print("\n\n> Question:")
    # print(query)
    # print("\n> Answer:")
    # print(answer)

    # Print the relevant sources used for the answer
    for document in docs:
        print("\n> " + document.metadata["source"] + ":")
        print(document.page_content)

ваше ожидание не соответствует действительности. частный GPT просто означает, что он может работать локально на вашем компьютере без Интернета. Вы можете проглатывать документы и задавать вопросы без подключения к Интернету!

Отсюда

PrivateGPT особенно полезен для частных лиц или компаний, которым требуется общение с ChatGPT, но которые обеспокоены конфиденциальной личной или деловой информацией, которая может быть раскрыта в ходе взаимодействия.

Этот инструмент обеспечивает дополнительную безопасность частных разговоров, сохраняя при этом функциональность ChatGPT. Простой процесс входа/регистрации в инструменте позволяет пользователям легко начать генерировать текст, не содержащий конфиденциальной информации, не беспокоясь о последствиях для конфиденциальности.

В целом, PrivateGPT предоставляет эффективное решение для частных лиц и организаций, которые хотят использовать LLM, такие как ChatGPT, но нуждаются в дополнительной гарантии защиты конфиденциальности.