You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中使用vector_search时,如何基于查询表过滤基表

基于BigQuery vector_search实现按查询表行过滤基表的向量匹配需求

背景说明

BigQuery的vector_search函数使用时需准备两类表:存储所有嵌入向量的基表,以及存储待匹配嵌入向量的查询表。示例代码如下:

SELECT *
FROM
  VECTOR_SEARCH(
    (SELECT * FROM mydataset.table1 WHERE doc_id = 4),
    'my_embedding',
    (SELECT  doc_id, embedding FROM mydataset.table2),
    'embedding',
    top_k => 2,
    options => '{"use_brute_force":true}');

其中table1为基表,table2为查询表。

需求描述

当前需要实现:针对查询表的每一行,用该行对应的doc_id过滤基表,再执行向量匹配,最终所有匹配结果需与对应的doc_id关联。

例如查询表包含3行数据:

doc idembeddings
1[1, 2, 3, 4]
2[5, 5, 6, 7]
3[9, 10, 11, 12]

这相当于分别针对doc_id=1、doc_id=2、doc_id=3调用vector_search函数,为每行的嵌入向量找到最匹配的结果。

已考虑的方案及问题

  • 编写参数化Python脚本并发送异步请求:需处理扩缩容的基础设施问题,且脱离BigQuery生态。
  • 编写BigQuery存储过程:脚本会按顺序循环处理参数,执行速度较慢。
  • 使用BigQuery ML对文档嵌入向量执行K-means聚类:将聚类中心存储到独立表,再计算每个文档与聚类中心的余弦距离,基于聚类中心查询簇内数据,本质是在文档层面重新实现IVF索引流程,复杂度较高。

期望解决方式

若能修改vector_search函数,使其支持基于查询表每行的值过滤基表,将大幅节省时间与精力。

内容的提问来源于stack exchange,提问作者Neil Bhutada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:43:20