相关文章推荐
逼格高的山寨机  ·  [OpenCV实战]35 ...·  5 月前    · 
好帅的匕首  ·  怎样消除回车符号-掘金·  1 年前    · 
坏坏的金针菇  ·  C++ ...·  1 年前    · 
唠叨的领结  ·  “ORA-01779: ...·  1 年前    · 

Chorma

Chroma 是开源嵌入数据库 。Chroma 通过为 LLM 插入知识、事实和技能,使构建 LLM 应用程序变得容易。

最近AIGC可谓火遍互联网,各种技术也层出不穷,其中向量数据库Chorma以简单速度快等优点脱颖而出.Chroma是在研究Langchain的过程中发现较轻量级的向量数据库,同时也能为你提供一些简单的向量搜索,虽然搜索结果偶尔会不尽如人意,但是Chorma依然是一个适合初学者入门向量数据库的学习内容。本文基于python3.11展开.

Langchain+Chroma+OpenAI实现为GPT链接本地向量数据

  • 我们下载一些依赖
  •     pip3 install openai
        pip3 install chromadb
        pip3 install langchain
        pip3 install unstructured
    

    这里我们下载了openai、chromadb、langchain这些都是必要的依赖.chromadb为我们提供chroma的客户端

    加载相应文档进行向量化操作

    #导入文档加载器
    from langchain.document_loaders import DirectoryLoader, TextLoader
    #指定chroma持久化的目录,当我们不知道目录时,chroma会将数据存储在内存中,随着程序的关闭就会删除
    persist_directory = "./public"
    #按目录加载文档
    loader = DirectoryLoader(persist_directory, glob='**/*.txt')
    docs = loader.load()
    #加载单个文档 可以自由选择
    loader = TextLoader('./public/***.txt', encoding='utf8')
    docs = loader.load()
    # 调用openai Embeddings
    os.environ["OPENAI_API_KEY"] = "sk-*** 这里输入Open AI APIKey"
    embeddings = OpenAIEmbeddings(openai_api_key=os.environ["OPENAI_API_KEY"])
    # 文档切块目的是为了防止超出GPTAPI的token限制
    text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)
    doc_texts = text_splitter.split_documents(docs)
    # 向量化
    vectordb = Chroma.from_documents(doc_texts, embeddings, persist_directory=persist_directory)
    # 持久化
    vectordb.persist()
    #执行到这里你会发现public目录下多了一些以parquest结尾的文件,这些文件就是chroma持久化本地的向量数据
    

    3.向量化搜索以及调用OpenAI回答

    question = "你要问的问题" # 通过目录加载向量 这里的目录就是我们持久化的目录 vectordb = Chroma(persist_directory=persist_directory, embedding_function=embeddings) # 向量搜索 根据你的问题进行本地向量搜索 docs = vectordb.similarity_search(question, k=4) print(docs) # 将搜索到的信息重新转换为向量 (直接查到向量数据还不会😑😑) vectordb = Chroma.from_documents(docs, embeddings) #将向量转换为OpenAI所需的格式 retriever = vectordb.as_retriever() # 创建聊天机器人对象chain chain = ConversationalRetrievalChain.from_llm(ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo"),retriever=retriever,return_source_documents=True) chat_history = [] # 调用OpenAI接口实现AI会话 result = chain({"question": question, "chat_history": chat_history}) printr(result) #到这里就基本实现 Langchain+Chroma+OpenAI实现为GPT链接本地向量数据 FlyLow 后端JAVA PHP Python @🐶🐱
    粉丝