探索 Google BigQuery Vector Search:大规模语义搜索和嵌入式管理

探索 Google BigQuery Vector Search:大规模语义搜索和嵌入式管理

引言

在数据驱动的世界中,快速和高效的搜索能力是必不可少的。在这篇文章中,我们将探讨如何在 Google Cloud 中使用 BigQuery Vector Search 进行大规模语义搜索,以及如何通过 BigQueryVectorStore 类在 LangChain 中管理嵌入。此外,我们还将了解如何使用 API 代理服务以提高访问的稳定性。

主要内容

1. 初始化和设置

首先,为了在 Google Cloud 中进行操作,我们需要安装一些必要的库。

bash 复制代码
%pip install --upgrade --quiet langchain langchain-google-vertexai "langchain-google-community[featurestore]"

安装库后,建议重启 Jupyter 运行时以应用更改。

python 复制代码
import IPython

app = IPython.Application.instance()
app.kernel.do_shutdown(True)  # 重启当前内核

接下来,需要设置项目 ID 和区域信息:

python 复制代码
PROJECT_ID = "your_project_id"  # @param {type:"string"}
REGION = "us-central1"  # @param {type: "string"}
! gcloud config set project {PROJECT_ID}

2. 创建嵌入和向量存储

接着,我们将创建一个嵌入类实例,并初始化 BigQueryVectorStore。

python 复制代码
from langchain_google_vertexai import VertexAIEmbeddings
from langchain_google_community import BigQueryVectorStore

embedding = VertexAIEmbeddings(
    model_name="textembedding-gecko@latest", 
    project=PROJECT_ID
)

store = BigQueryVectorStore(
    project_id=PROJECT_ID,
    dataset_name="my_langchain_dataset",
    table_name="doc_and_vectors",
    location=REGION,
    embedding=embedding,
)

3. 管理和搜索文本

我们可以添加文本数据,并使用语义搜索找到相似的文档:

python 复制代码
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)

还可以通过向量搜索文档:

python 复制代码
query_vector = embedding.embed_query(query)
docs = store.similarity_search_by_vector(query_vector, k=2)
print(docs)

4. 高级功能和低延迟服务

使用 Feature Store Online Store 可以进一步降低延迟,适合生产环境。

python 复制代码
store.to_vertex_fs_vector_store()  # 将数据转移到 VertexFS

常见问题和解决方案

问题1:访问限制和网络延迟

在某些地区,可能会遇到访问 Google API 的限制,这时可以考虑使用 API 代理服务。API 代理服务可以提高请求的稳定性和响应速度。

问题2:数据同步和管理

在处理大规模数据时,数据同步和管理是一个挑战。可以通过脚本自动化这个过程,或者使用 Google Cloud 提供的自动化工具。

总结和进一步学习资源

本文探讨了如何在 Google Cloud 中使用 BigQuery Vector Search 进行高效的语义搜索,并重点介绍了如何在 LangChain 中管理和查询嵌入数据。如需进一步学习,请参考本文末尾的参考资料。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---

相关推荐
泡泡oO24 分钟前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈
维克兜率天28 分钟前
趋势过滤:避免被“假突破“反复打脸
前端
8年区块链老兵1 小时前
一篇文章教会你:用区块高度读懂比特币链上的每一笔交易
前端
xixichensh1 小时前
前端转做AI程序员第一步——开发一个AI流式对话Demo
前端
小羊没烦恼!1 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
Leslie1651 小时前
聚合不只是 GROUP BY:HashAggregate 与 SortAggregate 的内存账本
前端
ITOM运维行者2 小时前
PHP性能监控怎么做?从响应时间到慢函数的6个关键指标
前端·javascript·后端
成旭先生2 小时前
AI 文本审核 API:一段中文文本判风险等级、命中标签与处置建议
java·前端·人工智能·api接口·内容风控·文本审核·ugc审核
liangshanbo12152 小时前
前端面试题:AI 对话中超长消息导致内存溢出,怎么解决?
java·开发语言·前端
静默回滚2 小时前
PDF能打开却不能复制,原来是权限密码
前端