如何创建和查询向量存储
INFO
请前往集成,查看与第三方向量存储的内置集成文档。
存储和搜索非结构化数据的最常见方式之一是将其嵌入并存储生成的嵌入向量,然后在查询时对非结构化查询进行嵌入,并检索与嵌入查询“最相似”的嵌入向量。向量存储负责存储嵌入数据并为您执行向量搜索。
入门
本指南展示了与向量存储相关的基本功能。与向量存储一起工作的关键部分是创建要放入其中的向量,通常是通过嵌入创建的。因此,建议您在深入研究本文之前先熟悉文本嵌入模型接口。
在使用向量存储之前,我们需要加载一些数据并初始化一个嵌入模型。
我们想要使用 OpenAIEmbeddings,因此我们需要获取 OpenAI API 密钥。
python
import os
import getpass
os.environ['OPENAI_API_KEY'] = getpass.getpass('OpenAI API Key:')
python
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
# 加载文档,将其分割成块,对每个块进行嵌入,然后将其加载到向量存储中。
raw_documents = TextLoader('state_of_the_union.txt').load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
documents = text_splitter.split_documents(raw_documents)
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
有许多出色的向量存储选项,以下是一些免费、开源且完全在本地机器上运行的选项。请查看所有集成以获取许多出色的托管服务。
相似性搜索
所有向量存储都公开了 similarity_search
方法。这将接收传入的文档,创建其嵌入,并找到所有具有最相似嵌入的文档。
python
query = "总统对 Ketanji Brown Jackson 说了什么"
docs = db.similarity_search(query)
print(docs[0].page_content)
通过向量进行相似性搜索
还可以通过 similarity_search_by_vector
进行搜索,该方法接受嵌入向量作为参数,而不是字符串。
python
embedding_vector = OpenAIEmbeddings().embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector)
print(docs[0].page_content)