国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Langchain+GPT+向量數(shù)據(jù)庫(kù)chromadb 來(lái)創(chuàng)建文檔對(duì)話機(jī)器人

這篇具有很好參考價(jià)值的文章主要介紹了使用Langchain+GPT+向量數(shù)據(jù)庫(kù)chromadb 來(lái)創(chuàng)建文檔對(duì)話機(jī)器人。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用Langchain+GPT+向量數(shù)據(jù)庫(kù)chromadb 來(lái)創(chuàng)建文檔對(duì)話機(jī)器人

一.效果圖如下:

blog.csdn.net/v_july_v/article/details/131552592,數(shù)據(jù)庫(kù),langchain,gpt

二.安裝包

 pip install langchain
 pip install chromadb
 pip install unstructured
 pip install jieba

三.代碼如下

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os  # 導(dǎo)入os模塊,用于操作系統(tǒng)相關(guān)的操作

import chromadb
import jieba as jb  # 導(dǎo)入結(jié)巴分詞庫(kù)
from langchain.chains import ConversationalRetrievalChain  # 導(dǎo)入用于創(chuàng)建對(duì)話檢索鏈的類(lèi)
from langchain.chat_models import ChatOpenAI  # 導(dǎo)入用于創(chuàng)建ChatOpenAI對(duì)象的類(lèi)
from langchain.document_loaders import DirectoryLoader  # 導(dǎo)入用于加載文件的類(lèi)
from langchain.embeddings import OpenAIEmbeddings  # 導(dǎo)入用于創(chuàng)建詞向量嵌入的類(lèi)
from langchain.text_splitter import TokenTextSplitter  # 導(dǎo)入用于分割文檔的類(lèi)
from langchain.vectorstores import Chroma  # 導(dǎo)入用于創(chuàng)建向量數(shù)據(jù)庫(kù)的類(lèi)

import os
os.environ["OPENAI_API_KEY"] = 'xxxxxx'

# 初始化函數(shù),用于處理輸入的文檔
def init():
    files = ['2023NBA.txt']  # 需要處理的文件列表
    cur_dir = '/'.join(os.path.abspath(__file__).split('/')[:-1])
    for file in files:  # 遍歷每個(gè)文件
        data_path = os.path.join(cur_dir, f'data/{file}')
        with open(data_path, 'r', encoding='utf-8') as f:  # 以讀模式打開(kāi)文件
            data = f.read()  # 讀取文件內(nèi)容

        cut_data = " ".join([w for w in list(jb.cut(data))])  # 對(duì)讀取的文件內(nèi)容進(jìn)行分詞處理
        cut_file =os.path.join(cur_dir, f"data/cut/cut_{file}")
        with open(cut_file, 'w',encoding='utf-8') as f:  # 以寫(xiě)模式打開(kāi)文件
            f.write(cut_data)  # 將處理后的內(nèi)容寫(xiě)入文件


# 新建一個(gè)函數(shù)用于加載文檔
def load_documents(directory):
    # 創(chuàng)建DirectoryLoader對(duì)象,用于加載指定文件夾內(nèi)的所有.txt文件
    loader = DirectoryLoader(directory, glob='**/*.txt')
    docs = loader.load()  # 加載文件
    return docs  # 返回加載的文檔


# 新建一個(gè)函數(shù)用于分割文檔
def split_documents(docs):
    # 創(chuàng)建TokenTextSplitter對(duì)象,用于分割文檔
    text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)
    docs_texts = text_splitter.split_documents(docs)  # 分割加載的文本
    return docs_texts  # 返回分割后的文本


# 新建一個(gè)函數(shù)用于創(chuàng)建詞嵌入
def create_embeddings(api_key):
    # 創(chuàng)建OpenAIEmbeddings對(duì)象,用于獲取OpenAI的詞向量
    embeddings = OpenAIEmbeddings(openai_api_key=api_key)
    return embeddings  # 返回創(chuàng)建的詞嵌入


# 新建一個(gè)函數(shù)用于創(chuàng)建向量數(shù)據(jù)庫(kù)
def create_chroma(docs_texts, embeddings, persist_directory):
    new_client = chromadb.EphemeralClient()
    vectordb = Chroma.from_documents(
        docs_texts, embeddings, client=new_client, collection_name="openai_collection"
    )
    return vectordb  # 返回創(chuàng)建的向量數(shù)據(jù)庫(kù)


# load函數(shù),調(diào)用上面定義的具有各個(gè)職責(zé)的函數(shù) pip install unstructured
def load():
    docs = load_documents('data/cut')  # 調(diào)用load_documents函數(shù)加載文檔
    docs_texts = split_documents(docs)  # 調(diào)用split_documents函數(shù)分割文檔
    api_key = os.environ.get('OPENAI_API_KEY')  # 從環(huán)境變量中獲取OpenAI的API密鑰
    embeddings = create_embeddings(api_key)  # 調(diào)用create_embeddings函數(shù)創(chuàng)建詞嵌入

    # 調(diào)用create_chroma函數(shù)創(chuàng)建向量數(shù)據(jù)庫(kù)
    vectordb = create_chroma(docs_texts, embeddings, 'data/cut/')

    # 創(chuàng)建ChatOpenAI對(duì)象,用于進(jìn)行聊天對(duì)話
    openai_ojb = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo")

    # 從模型和向量檢索器創(chuàng)建ConversationalRetrievalChain對(duì)象
    chain = ConversationalRetrievalChain.from_llm(openai_ojb, vectordb.as_retriever())
    return chain  # 返回該對(duì)象


init()
# 調(diào)用load函數(shù),獲取ConversationalRetrievalChain對(duì)象
# pip install chromadb
# pip install unstructured
# pip install jieba
chain = load()


# 定義一個(gè)函數(shù),根據(jù)輸入的問(wèn)題獲取答案
def get_ans(question):
    chat_history = []  # 初始化聊天歷史為空列表
    result = chain({  # 調(diào)用chain對(duì)象獲取聊天結(jié)果
        'chat_history': chat_history,  # 傳入聊天歷史
        'question': question,  # 傳入問(wèn)題
    })
    return result['answer']  # 返回獲取的答案


if __name__ == '__main__':  # 如果此腳本作為主程序運(yùn)行
    s = input('please input:')  # 獲取用戶輸入
    while s != 'exit':  # 如果用戶輸入的不是'exit'
        ans = get_ans(s)  # 調(diào)用get_ans函數(shù)獲取答案
        print(ans)  # 打印答案
        s = input('please input:')  # 獲取用戶輸入

文件存放地址

blog.csdn.net/v_july_v/article/details/131552592,數(shù)據(jù)庫(kù),langchain,gpt

blog.csdn.net/v_july_v/article/details/131552592,數(shù)據(jù)庫(kù),langchain,gpt

參考:

https://python.langchain.com/docs/use_cases/chatbots

https://python.langchain.com/docs/integrations/vectorstores/chroma

https://blog.csdn.net/v_JULY_v/article/details/131552592?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169450205816800226590967%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169450205816800226590967&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-131552592-null-null.142v93chatsearchT3_2&utm_term=langchain&spm=1018.2226.3001.4449文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-768443.html

到了這里,關(guān)于使用Langchain+GPT+向量數(shù)據(jù)庫(kù)chromadb 來(lái)創(chuàng)建文檔對(duì)話機(jī)器人的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • (一)AI本地知識(shí)庫(kù)問(wèn)答(可運(yùn)行):LangChain+Chroma向量數(shù)據(jù)庫(kù)+OpenAi大模型

    (一)AI本地知識(shí)庫(kù)問(wèn)答(可運(yùn)行):LangChain+Chroma向量數(shù)據(jù)庫(kù)+OpenAi大模型

    只需要看config目錄下的config.py,data目錄下的txt知識(shí)庫(kù)文件,db向量數(shù)據(jù)庫(kù)文件在持久化部署后會(huì)自動(dòng)生成,route下的app.py,scripts目錄下的Chroma向量庫(kù)持久化部署.py這幾個(gè)就可以,scripts目錄下的考勤問(wèn)答.py和test目錄下都是單獨(dú)的自己測(cè)試的小代碼,可以不用關(guān)注 因?yàn)檫\(yùn)行需要

    2024年02月03日
    瀏覽(29)
  • LangChain 4用向量數(shù)據(jù)庫(kù)Faiss存儲(chǔ),讀取YouTube的視頻文本搜索Indexes for information retrieve

    LangChain 4用向量數(shù)據(jù)庫(kù)Faiss存儲(chǔ),讀取YouTube的視頻文本搜索Indexes for information retrieve

    接著前面的Langchain,繼續(xù)實(shí)現(xiàn)讀取YouTube的視頻腳本來(lái)問(wèn)答Indexes for information retrieve LangChain 實(shí)現(xiàn)給動(dòng)物取名字, LangChain 2模塊化prompt template并用streamlit生成網(wǎng)站 實(shí)現(xiàn)給動(dòng)物取名字 LangChain 3使用Agent訪問(wèn)Wikipedia和llm-math計(jì)算狗的平均年齡 引用向量數(shù)據(jù)庫(kù)Faiss 查看OpenAI model main.p

    2024年02月05日
    瀏覽(30)
  • ModaHub魔搭社區(qū):AI原生云向量數(shù)據(jù)庫(kù)Zilliz Cloud與 LangChain 集成搭建智能文檔問(wèn)答系統(tǒng)

    ModaHub魔搭社區(qū):AI原生云向量數(shù)據(jù)庫(kù)Zilliz Cloud與 LangChain 集成搭建智能文檔問(wèn)答系統(tǒng)

    目錄 準(zhǔn)備工作 主要參數(shù) 準(zhǔn)備數(shù)據(jù) 開(kāi)始提問(wèn) 本文將演示如何使用 Zilliz Cloud 和 LangChain 搭建基于大語(yǔ)言模型(LLM)的問(wèn)答系統(tǒng)。在本例中,我們將使用一個(gè) 1 CU 的 Cluster,還將使用 OpenAI 的 Embedding API 來(lái)獲取指定文本的向量表示?,F(xiàn)在就讓我們開(kāi)始吧。 運(yùn)行本頁(yè)中的腳本需要

    2024年02月15日
    瀏覽(27)
  • 基于GPT3.5實(shí)現(xiàn)本地知識(shí)庫(kù)解決方案-利用向量數(shù)據(jù)庫(kù)和GPT向量接口-實(shí)現(xiàn)智能回復(fù)并限制ChatGPT回答的范圍...

    基于GPT3.5實(shí)現(xiàn)本地知識(shí)庫(kù)解決方案-利用向量數(shù)據(jù)庫(kù)和GPT向量接口-實(shí)現(xiàn)智能回復(fù)并限制ChatGPT回答的范圍...

    標(biāo)題有點(diǎn)長(zhǎng),但是基本也說(shuō)明出了這篇文章的主旨,那就是利用GPT AI智能回答自己設(shè)置好的問(wèn)題 既能實(shí)現(xiàn)自己的AI知識(shí)庫(kù)機(jī)器人,又能節(jié)省ChatGPT調(diào)用的token成本費(fèi)用。 代碼倉(cāng)庫(kù)地址 document.ai: 基于GPT3.5的通用本地知識(shí)庫(kù)解決方案 下面圖片是整個(gè)流程: 導(dǎo)入知識(shí)庫(kù)數(shù)據(jù) 利用

    2024年02月02日
    瀏覽(18)
  • DB-GPT:強(qiáng)強(qiáng)聯(lián)合Langchain-Vicuna的應(yīng)用實(shí)戰(zhàn)開(kāi)源項(xiàng)目,徹底改變與數(shù)據(jù)庫(kù)的交互方式

    DB-GPT:強(qiáng)強(qiáng)聯(lián)合Langchain-Vicuna的應(yīng)用實(shí)戰(zhàn)開(kāi)源項(xiàng)目,徹底改變與數(shù)據(jù)庫(kù)的交互方式

    今天看到 螞蟻科技 Magic 開(kāi)源的DB-GPT項(xiàng)目,覺(jué)得創(chuàng)意很好,集成了當(dāng)前LLM的主流技術(shù),主要如下 Langchain: 構(gòu)建在LLM之上的應(yīng)用開(kāi)發(fā)框架 HuggingFace: 模型標(biāo)準(zhǔn),提供大模型管理功能 Vicuna: 一個(gè)令GPT-4驚艷的開(kāi)源聊天機(jī)器人,基于LLaMA模型和ShareGPT數(shù)據(jù)集訓(xùn)練的,能夠達(dá)到接近Cha

    2024年02月15日
    瀏覽(21)
  • LangChain:使用自然語(yǔ)言查詢數(shù)據(jù)庫(kù)

    LangChain:使用自然語(yǔ)言查詢數(shù)據(jù)庫(kù)

    目錄 前言 LangChain介紹 為什么選擇LangChain LangChain的結(jié)構(gòu) 代理 SQL Database Agent 數(shù)據(jù)庫(kù)模式和資源 導(dǎo)入必要的庫(kù) 連接到數(shù)據(jù)庫(kù): 設(shè)置 LLM、工具包和代理執(zhí)行器: 使用自然語(yǔ)言查詢數(shù)據(jù)庫(kù): 完整代碼示例: 結(jié)論 在LLM模型還沒(méi)有特別成熟,像現(xiàn)在這樣火爆之前,我們對(duì)于數(shù)據(jù)庫(kù)

    2024年02月11日
    瀏覽(26)
  • 向量數(shù)據(jù)庫(kù):使用Elasticsearch實(shí)現(xiàn)向量數(shù)據(jù)存儲(chǔ)與搜索

    Here’s the table of contents: ??Elasticsearch在7.x的版本中支持 向量檢索 。在向量函數(shù)的計(jì)算過(guò)程中,會(huì)對(duì)所有匹配的文檔進(jìn)行線性掃描。因此,查詢預(yù)計(jì)時(shí)間會(huì)隨著匹配文檔的數(shù)量線性增長(zhǎng)。出于這個(gè)原因,建議使用查詢參數(shù)來(lái)限制匹配文檔的數(shù)量(類(lèi)似二次查找的邏輯,先使

    2024年02月07日
    瀏覽(97)
  • 如何使用 Elasticsearch 作為向量數(shù)據(jù)庫(kù)

    如何使用 Elasticsearch 作為向量數(shù)據(jù)庫(kù)

    在今天的文章中,我們將很快地通過(guò) Docker 來(lái)快速地設(shè)置 Elasticsearch 及 Kibana,并設(shè)置 Elasticsearch 為向量搜索。 在上面,我們指定了 elasic 超級(jí)用戶的密碼為 password。這在下面將要使用到。 驗(yàn)證容器是否已啟動(dòng)并正在運(yùn)行: 從上面我們可以看到 Elasticsarch 及 Kibana 已經(jīng)完全運(yùn)行

    2024年04月17日
    瀏覽(95)
  • 《向量數(shù)據(jù)庫(kù)指南》:使用公共的Pinecone數(shù)據(jù)集

    《向量數(shù)據(jù)庫(kù)指南》:使用公共的Pinecone數(shù)據(jù)集

    目錄 數(shù)據(jù)集包含向量和元數(shù)據(jù) 列出公共數(shù)據(jù)集 加載數(shù)據(jù)集 迭代數(shù)據(jù)集 分批迭代文檔并插入到索引中。 將數(shù)據(jù)集插入為數(shù)據(jù)幀。 接下來(lái)怎么做 本文檔介紹如何使用現(xiàn)有的Pinecone數(shù)據(jù)集。 要了解創(chuàng)建和列出數(shù)據(jù)集的方法,請(qǐng)參閱創(chuàng)建數(shù)據(jù)集。 ?

    2024年02月16日
    瀏覽(95)
  • 使用docker搭建Milvus向量數(shù)據(jù)庫(kù)

    使用docker搭建Milvus向量數(shù)據(jù)庫(kù)

    官網(wǎng)是這樣說(shuō)的: Milvus創(chuàng)建于2019年,目標(biāo)單一:存儲(chǔ)、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和其他機(jī)器學(xué)習(xí)(ML)模型生成的大量嵌入向量。 作為一個(gè)專(zhuān)門(mén)用于處理輸入向量查詢的數(shù)據(jù)庫(kù),它能夠?qū)θf(wàn)億規(guī)模的向量進(jìn)行索引。與現(xiàn)有的關(guān)系數(shù)據(jù)庫(kù)不同,Milvus主要按照預(yù)定義的模式處

    2024年02月09日
    瀏覽(93)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包