引言
在大数据时代,文本数据的管理和搜索变得尤为重要。Google BigQuery向量搜索允许您使用GoogleSQL进行语义搜索,利用向量索引快速获得近似结果,或使用蛮力法获得精确结果。本文展示如何在LangChain中设置一个端到端的数据和嵌入管理系统,并利用BigQueryVectorStore类实现可扩展的语义搜索。
主要内容
安装库
首先,安装必要的库:
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"
安装完成后,重启Jupyter内核以使新安装包生效:
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
配置项目
设置项目ID
配置您的项目ID:
! gcloud config set project {PROJECT_ID}
设置地区
指定BigQuery使用的区域:
REGION = "us-central1" # @param {type: "string"}
设置数据集和表名
这将是您的BigQuery Vector Store:
DATASET = "my_langchain_dataset" # @param {type: "string"}
TABLE = "doc_and_vectors" # @param {type: "string"}
认证环境
如果您在Colab上运行此笔记本,取消注释并继续:
# from google.colab import auth as google_auth
# google_auth.authenticate_user()
使用BigQueryVectorStore
创建嵌入类实例
确保启用Vertex AI API:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
初始化BigQueryVectorStore
from langchain_google_community import BigQueryVectorStore
store = BigQueryVectorStore(
project_id=PROJECT_ID,
dataset_name=DATASET,
table_name=TABLE,
location=REGION,
embedding=embedding,
)
添加文本
all_texts = ["Apples and oranges", "Cars and airplanes", "Pineapple", "Train", "Banana"]
metadatas = [{"len": len(t)} for t in all_texts]
store.add_texts(all_texts, metadatas=metadatas)
文本搜索
query = "I'd like a fruit."
docs = store.similarity_search(query)
print(docs)
代码示例
以下是一个完整示例代码片段:
query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)
docs = store.similarity_search_by_vector(query_vector, filter={"len": 6})
print(docs)
常见问题和解决方案
- 网络限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。
- 数据同步:使用.to_vertex_fs_vector_store()方法在低延迟应用中进行数据同步。
总结和进一步学习资源
本文介绍了如何在Google BigQuery中使用LangChain实现向量搜索。你可以探索Google Cloud的向量存储概念指南和向量存储使用指南以获取更多信息。
参考资料
- Google Cloud 官方文档
- LangChain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---