OpenAI+LangChain+Chroma 骑猪看日落 2023-10-10 21:36 69阅读 0赞 ### langchain使用chroma进行持久化时的一些问题 ### 根据官方文档–[langchain使用Chroma官方文档][langchain_Chroma] 第一步在工程中进行 pip install chromadb ![在这里插入图片描述][3f39cd7df84a42279bb8c2282abb0664.png_pic_center] 并粘上官网提供的相应代码后 代码报错 ![在这里插入图片描述][10bbcd3dcde24eaca59b31a73097d099.png] 这边搜索报错 error:Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/ 需要安装 Microsoft C++ 生成工具 - Visual Studio [Microsoft C++ 生成工具][Microsoft C_] 页面直接点击下载生成工具即可 ![在这里插入图片描述][cd0bef7f249249c4a0f004a2f32d1adc.png_pic_center] ![在这里插入图片描述][a8e701b96d454d699408161715325dae.png_pic_center] ![在这里插入图片描述][beb30f2cabac4da997fce539a51c8901.png] ![在这里插入图片描述][6c83b9a9cf044c2db4571dd89b29ff31.png] 以上步骤执行完毕后再执行 pip install chromadb 即可 ![在这里插入图片描述][3c7630213d844841810c151487aa60ab.png] 下面提供一段demo代码 import os from langchain.chains.question_answering import load_qa_chain from langchain.text_splitter import CharacterTextSplitter from langchain.chat_models import ChatOpenAI from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.document_loaders import TextLoader from langchain.document_loaders import DirectoryLoader # 这里输入自己的 openai 的 key os.environ["OPENAI_API_KEY"] = "---------------------------" os.environ["OPENAI_API_BASE"] = "---------------------------" OPENAI_API_KEY = os.environ['OPENAI_API_KEY'] OPENAI_API_BASE = os.environ["OPENAI_API_BASE"] # chat_content写提问 chat_content = "柏林少女这款香水的评价如何" print("用户正在提问:" + chat_content) # 这里的upload 是最外层的文件夹(也可自己配置希望读取的文件夹) this_dir = os.path.dirname(__file__) path = os.path.join(this_dir, '..', 'upload') print(path) # langchain提供DirectoryLoader方法可直接加载文件夹下指定格式文件 # loader_kwargs 参数代表是否开启--自动根据编码格式转义 text_loader_kwargs = { 'autodetect_encoding': True} loader = DirectoryLoader(path, glob="*.txt", loader_cls=TextLoader, loader_kwargs=text_loader_kwargs) docs = loader.load() # print(docs) embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY) # 使用ChatOpenAI接口 llm = ChatOpenAI(temperature=0, openai_api_key=OPENAI_API_KEY, verbose=True) # 初始化加载器 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0) # 切割加载的 document split_docs = text_splitter.split_documents(docs) # 这里请更换为自己电脑的指定路径,以存放index vector_store_path = r"D:\pythonCodeSpace\vector_store" print(vector_store_path) # 下面两种情况在使用时请仅选其一:1.embedding并存储 2.仅读取指定存储空间 # 1.持久化存储进入矢量库 print("chroma持久化------") vectordb = Chroma.from_documents(documents=split_docs, embedding=embeddings, persist_directory=vector_store_path) vectordb.persist() # 2.如果只是读取---读取持久化的embedding内容 # vectordb = Chroma(persist_directory=vector_store_path, embedding_function=embeddings) # k=? 是指指召回top ?的结果 # as_retriever函数还有个search_type的参数, 默认的是similarity, 参数解释如下: # search_type 搜索类型:“similarity” 或 “mmr” # search_type=“similarity” 在检索器对象中使用相似性搜索,在其中选择与问题向量最相似的文本块向量。 # search_type=“mmr” 使用最大边际相关性搜索,其中优化相似性以查询所选文档之间的多样性。 retriever = vectordb.as_retriever(search_kwargs={ "k": 1}) print("根据提问内容在矢量库中查询相关内容,relevantDocs------") relevantDocs = retriever.get_relevant_documents(chat_content) chain = load_qa_chain(llm, chain_type="stuff") result = chain({ "input_documents": relevantDocs, "question": chat_content}, return_only_outputs=True) print(result['output_text']) 这里的demo代码有参考csdn的文章 如下 [用LangChain实现一个ChatBlog][LangChain_ChatBlog] 感谢作者大大 [langchain_Chroma]: https://python.langchain.com/en/latest/modules/indexes/vectorstores/examples/chroma.html# [3f39cd7df84a42279bb8c2282abb0664.png_pic_center]: https://img-blog.csdnimg.cn/3f39cd7df84a42279bb8c2282abb0664.png#pic_center [10bbcd3dcde24eaca59b31a73097d099.png]: https://img-blog.csdnimg.cn/10bbcd3dcde24eaca59b31a73097d099.png [Microsoft C_]: https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ [cd0bef7f249249c4a0f004a2f32d1adc.png_pic_center]: https://img-blog.csdnimg.cn/cd0bef7f249249c4a0f004a2f32d1adc.png#pic_center [a8e701b96d454d699408161715325dae.png_pic_center]: https://img-blog.csdnimg.cn/a8e701b96d454d699408161715325dae.png#pic_center [beb30f2cabac4da997fce539a51c8901.png]: https://img-blog.csdnimg.cn/beb30f2cabac4da997fce539a51c8901.png [6c83b9a9cf044c2db4571dd89b29ff31.png]: https://img-blog.csdnimg.cn/6c83b9a9cf044c2db4571dd89b29ff31.png [3c7630213d844841810c151487aa60ab.png]: https://img-blog.csdnimg.cn/3c7630213d844841810c151487aa60ab.png [LangChain_ChatBlog]: https://blog.csdn.net/qq_44193969/article/details/130815310?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168508101416800182166925%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168508101416800182166925&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-130815310-null-null.142%5Ev88%5Einsert_down28v1,239%5Ev2%5Einsert_chatgpt&utm_term=vectordb.as_retriever%28search_kwargs&spm=1018.2226.3001.4187
还没有评论,来说两句吧...