Получение ответа «Нет» при использовании Chroma DB вместе с llamaIndex для запроса пользовательского PDF-файла.Python

Программы на Python
Ответить
Anonymous
 Получение ответа «Нет» при использовании Chroma DB вместе с llamaIndex для запроса пользовательского PDF-файла.

Сообщение Anonymous »


Я создаю проект, который использует chroma DB, llamaindex и langchain. Но я не получаю ответа «Нет», когда пытаюсь выполнить запрос в пользовательских PDF-файлах. Даже если они успешно встраиваются, ниже приведены мои коды:

импортировать ОС, повторно импортировать Shutil время импорта из импорта grpc ServicerContext импорт векторной базы данных из импорта langchain OpenAI из llama_index импортировать GPTTreeIndex, SimpleDirectoryReader, LLMPredictor,GPTVectorStoreIndex,PromptHelper, VectorStoreIndex из llama_index импорт LangchainEmbedding, ServiceContext, Prompt из llama_index импорт StorageContext, load_index_from_storage из langchain.embeddings импортировать OpenAIEmbeddings из langchain.llms импортировать AzureOpenAI # Импортируем Azure OpenAI #from langchain_community.llms импортировать AzureOpenAI импорт хромадб из llama_index.vector_stores импортировать ChromaVectorStore из dotenv импорта load_dotenv load_dotenv() #openai.api_key = os.getenv["OPENAI_API_KEY"] def regenrate_tokens (имя_коллекции,persist_directory): если os.path.isdir((persist_directory)): print("каталог существовал, заменяя предыдущий каталог") Shutil.rmtree(persist_directory) print("Воссоздание вложений...") вектор=vectordb.CreatingChromaDB(имя_коллекции,persist_directory) вектор.storage_context.persist(persist_dir= persist_directory) еще: print("Каталог не закрывается, создаются новые вложения.") вектор=vectordb.CreatingChromaDB(имя_коллекции,persist_directory) вектор.storage_context.persist(persist_dir= persist_directory) time.sleep(10) # Спать на 10 секунд return('Токен восстановлен, можете задавать вопросы. 😄') def query__from_knowledge_base(вопрос): persist_directory = './ChromaDb' Collection_name = "chromaVectorStore" if(question == 'восстановить токены'): return (regenrate_tokens (имя_коллекции,persist_directory)) index = вектордб.LoadFromDisk(имя_коллекции,persist_directory) печать (индекс) # определить пользовательскую подсказку # ШАБЛОН_STR = ( # "Ниже мы предоставили контекстную информацию. \n" # "---------------------\n" # "{context_str}" # "\n---------------------\n" # "Учитывая эту информацию, ответьте на вопрос: {query_str}\n" # ) TEMPLATE_STR = """Создайте окончательный ответ на заданные вопросы, используя предоставленные выдержки из документов (в произвольном порядке) в качестве ссылок. ВСЕГДА включайте в свой ответ раздел «ИСТОЧНИКИ», включающий только минимальный набор источников, необходимый для ответа на вопрос. Всегда включайте предварительный просмотр источника. Если ответ содержит описание в документе, ответьте поэтапно. Если вы не можете ответить на вопрос, просто скажите, что вы не знаете. Не пытайтесь сфабриковать ответ и оставьте раздел ИСТОЧНИКИ пустым. "---------------------\n" "{context_str}" "\n---------------------\n" «Учитывая эту информацию, ответьте, пожалуйста, на вопрос: {query_str}\n» """ QA_TEMPLATE = Запрос (TEMPLATE_STR) query_engine = index.as_query_engine(text_qa_template=QA_TEMPLATE) печать (query_engine) ответ = query_engine.query(вопрос) распечатать (вопрос) # печать(ответ) ответ = ул (ответ) ответ = re.sub(r'Answer:', '', ответ) ответ = ответ.полоса() возврат (ответ) #print(regenrate_tokens()) #print(query__from_knowledge_base('Включение онлайн-архива для почтового ящика пользователя.')) Файл, содержащий Vectordb.py , содержащий методы создания и запроса, приведен ниже:

def MakingChromaDB(имя_коллекции,persist_directory): документы = SimpleDirectoryReader('./static/upload/').load_data() # имя_развертывания = "text-davinci-003" имя_развертывания = "gpt-3.5-турбо" openai_api_version="30.08.2023" # Создайте LLM через службу Azure OpenAI. llm = AzureOpenAI(deployment_name=deployment_name,openai_api_version=openai_api_version) llm_predictor = LLMPredictor(llm=llm) llm_predictor = LLMPredictor (llm = llm_predictor) embedding_llm = LangchainEmbedding(OpenAIEmbeddings()) # Определить быстрый помощник max_input_size = 3000 num_output = 256 chunk_size_limit = 1000 # размер окна токена на документ max_chunk_overlap = 20 # перекрытие для каждого фрагмента токена Prompt_helper = PromptHelper(max_input_size=max_input_size, num_output=num_output, max_chunk_overlap=max_chunk_overlap, chunk_size_limit=chunk_size_limit) service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, embed_model=embedding_llm, Prompt_helper=prompt_helper) chroma_client = chromadb.Client(Настройки( chroma_db_impl="duckdb+паркет", persist_directory= persist_directory)) печать (имя_коллекции) # создаем коллекцию chroma_collection = chroma_client.get_or_create_collection(имя_коллекции,embedding_function=embedding_llm) # https://docs.trychroma.com/api-reference печать(chroma_collection.count()) вектор_магазин = ChromaVectorStore(chroma_collection) Storage_context = StorageContext.from_defaults(vector_store=vector_store) index = GPTVectorStoreIndex.from_documents(documents, Storage_context=storage_context, service_context=service_context) печать(chroma_collection.count()) print(chroma_collection.get()['документы']) print(chroma_collection.get()['метаданные']) # index.storage_context.persist() индекс возврата def LoadFromDisk(имя_коллекции,persist_directory): chroma_client = chromadb.Client(Настройки( chroma_db_impl="duckdb+паркет", persist_directory= persist_directory)) печать (имя_коллекции) chroma_collection = chroma_client.get_or_create_collection(имя_коллекции) вектор_магазин = ChromaVectorStore(chroma_collection=chroma_collection) index = GPTVectorStoreIndex.from_vector_store(vector_store=vector_store) индекс возврата если мы попытаемся восстановить токены и попытаться запросить PDF-файлы, то будет получен ответ «Нет», даже если эти файлы встроены правильно.

Я новичок в этом, буду благодарен за любую помощь.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»