Я создаю проект, который использует 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 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-файлы, то будет получен ответ «Нет», даже если эти файлы встроены правильно.
Я новичок в этом, буду благодарен за любую помощь.
Мобильная версия