LangChain 核心模块:Data Conneciton - Vector Stores
LangChain 核心模块:Data Conneciton - Vector Stores
存储和搜索非结构化数据最常见的方法之一是将其嵌入并存储生成的嵌入向量,然后在查询时将非结构化查询进行嵌入,并检索与嵌入查询“最相似”的嵌入向量。
向量存储库负责为您存储已经过嵌入处理的数据并执行向量搜索。
下面以 Chroma
为例展示功能和用法
使用 Chroma 作为向量数据库,实现语义搜索
from langchain.document_loaders import TextLoader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
加载长文本
raw_documents = TextLoader(‘…/tests/state_of_the_union.txt’).load()
实例化文本分割器
text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=0)
分割文本
documents = text_splitter.split_documents(raw_documents)
将分割后的文本,使用 OpenAI 嵌入模型获取嵌入向量,并存储在 Chroma 中
db = Chroma.from_documents(documents, embeddings_model)
query = “What did the president say about Ketanji Brown Jackson”
docs = db.similarity_search(query)
print(docs[0].page_content)
embedding_vector = embeddings_model.embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector)
print(docs[0].page_content)