langchain Chroma 构建本地向量数据库

金歌  论坛元老 | 2024-8-25 07:09:21 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1051|帖子 1051|积分 3153

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
langchain Chroma 构建本地向量数据库

  1. # import
  2. from langchain_community.document_loaders import TextLoader
  3. from langchain_community.embeddings.sentence_transformer import (
  4.     SentenceTransformerEmbeddings,
  5. )
  6. from langchain_community.embeddings import HuggingFaceEmbeddings
  7. from langchain_community.vectorstores import Chroma
  8. from langchain_text_splitters import RecursiveCharacterTextSplitter
  9. from langchain_community.document_loaders.word_document import Docx2txtLoader
  10. import glob
  11. import os
  12. # 数据库路径
  13. db_dir = "./db"
  14. # 文档路径
  15. source_directory = "./docs"
  16. # 文件后缀
  17. file_ext = '*.docx'
  18. # create the open-source embedding function
  19. # embedding_function = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
  20. # 使用中文嵌入层编码器
  21. ebd_function = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese")
  22. def add_files_to_db(filepath:str="",file_ext:str=""):
  23.     docx_files = glob.glob(os.path.join(source_directory, file_ext))
  24.     text_list=[]
  25.     for file_name in docx_files:
  26.         print(file_name)
  27.         loader = Docx2txtLoader(file_name)
  28.         documents = loader.load()
  29.         text_list.extend(documents)
  30.     # split it into chunks
  31.     text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
  32.     docs = text_splitter.split_documents(text_list)
  33.     # load it into Chroma
  34.     db = Chroma.from_documents(docs, ebd_function, persist_directory=db_dir)
  35.     # save db to disk
  36.     db.persist()
  37. def query_db(db:Chroma,query:str=""):
  38.     # query it
  39.     docs = db.similarity_search(query)
  40.     # print results
  41.     print(docs[0].page_content)
  42.     print("-----------------------------------------")
  43.    
  44. if __name__=="__main__":
  45.     # 只需执行一次
  46.     # add_files_to_db(source_directory,file_ext)
  47.     db = Chroma(persist_directory=db_dir,embedding_function=ebd_function)
  48.     query = "怎么治疗骨质疏松症?"
  49.     query_db(db,query)
  50.     query = "怎么治疗鼻炎?"
  51.     query_db(db,query)
  52.     db = None
  53.     pass
复制代码
文档在当前代码目录下
./docs/第十六章-感染性疾病.docx
./docs/第八章-骨骼关节和肌肉疾病.docx
./docs/第十九章-耳鼻咽喉疾病.docx

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表