11.langchain 入门到放弃(五) Vector stores之向量数据库本地化

263 阅读1分钟

11.langchain 入门到放弃(五) Vector stores之向量数据库本地化

  langchain 入门到放弃(五) Vector stores之向量数据库本地化

  上一篇文章提到如何将文本数据向量化之后存储到向量数据库中,那么本章继续介绍如何将向量数据库本地化。

from langchain_community.document_loaders import TextLoader
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_text_splitters import RecursiveCharacterTextSplitter

raw_documents = TextLoader('../source/bluetooth.txt').load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=50, chunk_overlap=0)
documents = text_splitter.split_documents(raw_documents)

embeddings = HuggingFaceEmbeddings(model_name="../localLLM/all-MiniLM-L6-v2",
                                   model_kwargs={'device': 'cpu'})
# 加载本地chroma向量库
db = Chroma("my_chroma", embeddings, persist_directory="../vector_store")

result = db.similarity_search("瑜伽垫的尺寸是多少?")

if len(result) > 0:
    print(f"当前本地向量数据库中包含{len(result)}条数据")
else:
    # 从文档列表中创建Chroma矢量存储。如果指定了persist_directory,则集合将在那里持久化。否则,数据将在内存中是短暂的。
    db = Chroma.from_documents(documents, embeddings,
                           persist_directory="../vector_store", collection_name="my_chroma")
    # 确保数据持久化
    db.persist()
    '''
    1、使用Chroma运行相似性搜索。
    2、返回与查询文本最相似的文档列表
    '''
    result = db.similarity_search("瑜伽垫的尺寸是多少?")
    print(f"当前本地向量数据库没有查询到数据")

print(f"结果:" + result[0].page_content)