10.langchain 入门到放弃(五) Vector stores
langchain 入门到放弃(五) Vector stores
存储和搜索非结构化数据的最常见方法之一将其向量化之后存储到向量数据库,然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。矢量存储负责存储嵌入数据并为您执行矢量搜索。

向量数据库有很多 chroma、pinecone、faiss、lancedb
本例使用chroma,这个数据库可以将向量存储到本地
pip install langchain-chroma
bluetooth.txt的内容如下:
无线蓝牙耳机,规格:单个耳机尺寸:1.5'' x 1.3''。为什么我们热爱它:这款无线蓝物美价廉
瑜伽垫,规格:尺寸:24'' x 68''。为什么我们热爱它:我们的瑜伽垫拥有出色的...
代码如下
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'})
db = Chroma.from_documents(documents, embeddings)
'''
1、使用Chroma运行相似性搜索。
2、返回与查询文本最相似的文档列表
'''
result = db.similarity_search("瑜伽垫的尺寸是多少?")
print(f"结果:" + result[0].page_content)