ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

BigQuery AI.SIMILARITY 语义相似度计算完全指南:语法、参数与文本/图像匹配实战

BigQuery AI.SIMILARITY 语义相似度计算完全指南:语法、参数与文本/图像匹配实战 BigQuery AI.SIMILARITY 语义相似度计算完全指南语法、参数与文本/图像匹配实战【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills本篇技术指南围绕bigquery-ai-mlAgent Skill 中的参考文档references/ai_similarity.md展开系统讲解 BigQuery 内置函数AI.SIMILARITY的语法参考、输入参数、输出结构以及如何用一段 SQL 完成“文本对文本”和“文本对图像”的语义相似度计算。读完后你将能够直接在 SQL 查询中使用AI.SIMILARITY实现语义搜索与相似推荐并结合仓库中的AI.SEARCH、VECTOR_SEARCH、AI.GENERATE_EMBEDDING等参考资料理解各方案之间的选型差异。1. AI.SIMILARITY 的定位在 bigquery-ai-ml Skill 中做什么AI.SIMILARITY计算两个输入之间的语义相似度semantic similarity。根据参考文档 ai_similarity.md 的说明它的典型使用场景包括语义搜索Semantic search基于自然语言描述来检索文本或图像而不需要匹配特定关键词推荐Recommendation返回与某个给定实体属性相似的实体。该文档是 BigQuery AI ML Skill 的参考目录成员之一。SKILL.md 将AI.SIMILARITY归类为 Semantic similarity 参考与AI.SEARCH语义搜索、VECTOR_SEARCH向量检索、AI.GENERATE_EMBEDDING生成嵌入等函数并列。BigQuery 通过与 Vertex AI 集成在 SQL 查询中直接提供AI.FORECAST、AI.KEY_DRIVERS、AI.DETECT_ANOMALIES、AI.GENERATE等一系列内置 AI 函数AI.SIMILARITY正是这一体系中用于相似度度量的标量函数。从仓库结构看skills/cloud/bigquery-ai-ml/references/目录下共包含 16 个函数参考文档ai_agg.md、ai_classify.md、ai_similarity.md、ai_score.md、ai_search.md、vector_search.md、remote_models.md等ai_similarity.md是其中专门覆盖相似度计算的参考文件。2. 语法参考Syntax ReferenceAI.SIMILARITY的完整调用签名如下原文档完整保留AI.SIMILARITY( content1 CONTENT1, content2 CONTENT2 [, endpoint ENDPOINT] [, model_params MODEL_PARAMS] [, connection_id CONNECTION_ID] )可以看到两个内容参数content1、content2使用命名参数named argument方式传入而endpoint、model_params、connection_id三个为可选参数用方括号[, ...]标注。2.1 输入参数说明参数要求类型说明content1必填String 或 ObjectRef第一段文本内容或图像上下文content2必填String 或 ObjectRef与之比较的第二段文本内容或图像connection_id可选String用于 LLM 的 Connection IDendpoint可选String模型端点例如text-embedding-005model_params可选JSON模型参数的 JSON 对象例如temperature、max_output_tokens几个值得注意的实现细节String or ObjectRef的双类型输入是AI.SIMILARITY支持多模态比较的关键。当内容来自 Cloud Storage 上的对象图像文件时通过OBJ.MAKE_REF()等对象引用函数生成的ObjectRef值即可作为参数传入这在第 4.2 节的图文比较示例中会用到。endpoint指定底层嵌入模型。原文档给出的示例端点是text-embedding-005在图文比较示例中则使用了multimodalembedding001端点来处理图像输入。结合 remote_models.md 的说明BigQuery 可用的嵌入类端点包括text-embedding-005、text-multilingual-embedding-002、gemini-embedding-001生成类端点则包括gemini-2.5-pro、gemini-2.5-flash。也就是说AI.SIMILARITY通过endpoint参数决定用哪个 Vertex AI 模型来计算相似度。connection_id控制连接解析。同样依据 remote_models.md 的说明当使用REMOTE WITH CONNECTION DEFAULT时BigQuery 会自动尝试使用模型所在区域的默认连接否则必须指定全限定连接 ID格式如my-project.us.my-connection。AI.SIMILARITY的connection_id参数即用于显式指定该连接。2.2 输出结构Output Schema列名类型说明(标量结果)FLOAT64相似度分数例如余弦相似度cosine similarity。出错时返回 nullAI.SIMILARITY是一个标量函数scalar function返回单行单列的FLOAT64分数这与第 5 节要介绍的AI.SEARCH、VECTOR_SEARCH等**表值函数table-valued function**有本质区别标量语义意味着它可以嵌入到SELECT列表、WHERE子句或ORDER BY中对任意两列/两行内容逐对打分非常适合“逐行计算相似度后排序取 Top N”的写法错误时返回 null这一行为对数据管道很关键查询不会因为个别无法处理的输入而整体失败你可以在外层用WHERE score IS NOT NULL或COALESCE过滤失败行。3. 实战示例一两段文本的语义相似度第一个示例计算两句自然语言的语义相似度。两句话用词完全不同cat/feline、sat/resting、mat/rug但语义相近适合验证函数确实做的是“语义”匹配而非关键词匹配SELECT AI.SIMILARITY( content1 The cat sat on the mat, content2 A feline is resting on the rug ) as similarity_score;由于未指定endpoint和connection_id此写法依赖 BigQuery 的区域默认连接行为见 remote_models.md 中关于REMOTE WITH CONNECTION DEFAULT的说明。若你的项目未配置默认连接或想固定端点以保证结果一致性应显式传入endpoint text-embedding-005与connection_id。在真实业务中更常见的用法是把字面量换成表中的列例如比较两张商品表的描述文本-- 基于原文档语法的列级用法示意 SELECT p1.title AS title_a, p2.title AS title_b, AI.SIMILARITY(content1 p1.description, content2 p2.description) AS similarity FROM mydataset.products p1 JOIN mydataset.products p2 ON p1.sku p2.sku ORDER BY similarity DESC LIMIT 10;4. 实战示例二文本与图像的语义相似度这是原文档给出的多模态示例完整继承如下。它分三步创建 schemacymbal_pets创建一张外部表cymbal_pets.product_images指向 Cloud Storage 上gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/的 PNG 图片用AI.SIMILARITY将查询文本aquarium device与每张图片ObjectRef逐一比较按相似度降序取 Top 3并用OBJ.GET_READ_URL生成签名 URL 方便人工查看命中结果。CREATE SCHEMA IF NOT EXISTS cymbal_pets; CREATE OR REPLACE EXTERNAL TABLE cymbal_pets.product_images WITH CONNECTION DEFAULT OPTIONS ( object_metadata SIMPLE, uris [gs://cloud-samples-data/bigquery/tutorials/cymbal-pets/images/*.png] ); SELECT uri, OBJ.GET_READ_URL(ref) AS signed_url, ai.similarity( aquarium device, ref, endpoint multimodalembedding001) AS similarity_score FROM cymbal_pets.product_images ORDER BY similarity_score DESC LIMIT 3;从这段示例可以提炼出几个实操要点外部表 ObjectRefCREATE EXTERNAL TABLE ... OPTIONS (object_metadata SIMPLE, uris [...])让 BigQuery 为每个对象暴露uri和ref列ref即ObjectRef类型可直接作为AI.SIMILARITY的图像输入endpoint multimodalembedding001图像比较必须使用能理解图像的多模态嵌入端点这与纯文本场景默认使用的text-embedding-005不同。从该示例可以推断处理图像输入时应显式指定多模态端点而不是依赖默认端点WITH CONNECTION DEFAULT外部表同样可以走默认连接与AI.SIMILARITY的connection_id缺省行为保持一致的连接解析逻辑结果可验证性signed_url列让你可以直接打开排名靠前的图片确认“aquarium device水族箱设备”这一查询是否真的排到了相关产品这是调试语义检索质量时的实用技巧。5. 选型对比AI.SIMILARITY 与 AI.SEARCH / VECTOR_SEARCH同一个 Skill 仓库中ai_search.md 和 vector_search.md 也覆盖了“找相似”这一主题三者定位不同选型时应结合数据形态决定维度AI.SIMILARITYAI.SEARCHVECTOR_SEARCH函数形态标量函数返回FLOAT64表值函数返回basedistance表值函数返回basedistance批量检索还含query输入任意两个文本/图像内容字面量或列表需启用 autonomous embedding 查询字符串基表 查询表/查询向量典型用法逐对打分、条件过滤、Top-N 排序对启用自动嵌入的表做语义检索/推荐/聚类/离群检测对已有嵌入列做最近邻检索支持top_k默认 10、distance_typeEUCLIDEAN/COSINE/DOT_PRODUCT默认EUCLIDEAN官方建议用COSINE嵌入来源由endpoint指定的模型在查询时计算表的generated_expressionAI.EMBED(source_column)基表的嵌入列或运行时嵌入简化的选型思路你有任意两段内容包括图像想给它们打个相似度分数或想在WHERE/ORDER BY中做逐行比较 → 用AI.SIMILARITY你有一张启用了 autonomous embedding 的表想按查询词直接取回 Top-K 相似行 → 用AI.SEARCH你已经维护了嵌入列例如通过 AI.GENERATE_EMBEDDING 生成其输出为ARRAYFLOAT64的embedding列→ 用VECTOR_SEARCH做最近邻检索。从 ai_search.md 的建表示例还可以看到 autonomous embedding 的写法列定义为GENERATED ALWAYS AS (AI.EMBED(description, connection_id us.example_connection, endpoint text-embedding-005)) STORED OPTIONS(asynchronous TRUE)。这说明AI.SIMILARITY的endpoint/connection_id参数与AI.EMBED使用同一套模型与连接体系两者在配置层面是可对齐的。6. 使用前提与注意事项结合本仓库文档使用AI.SIMILARITY时需要确认以下前提连接ConnectionAI.SIMILARITY依赖 BigQuery 与 Vertex AI 的集成。若项目已配置区域默认连接可省略connection_id否则应传入全限定连接 IDmy-project.us.my-connection格式见 remote_models.md。端点Endpoint文本场景可显式使用text-embedding-005图像输入参考文档示例使用multimodalembedding001。显式指定端点可以避免依赖默认行为也让结果在不同环境间更可复现。model_params为 JSON可传入temperature、max_output_tokens等模型参数用于微调底层模型行为原文档未给出具体的推荐取值实际以端点支持的参数为准。错误处理相似度计算失败时该行的结果为null而非抛出异常管道中应显式处理。适用边界AI.SIMILARITY属于“在查询内计算”的函数适合对少量成对内容打分或对中小规模表做逐行比较对大规模表的 Top-K 检索ai_search.md 与 vector_search.md 描述的表值函数方案配合嵌入索引与top_k参数是更直接的检索原语。7. 小结与延伸阅读AI.SIMILARITY是一个轻量、标量、多模态的语义相似度函数两个必填内容参数String 或 ObjectRef、三个可选参数endpoint、model_params、connection_id返回FLOAT64分数且错误时为null。原文档给出的两个示例分别覆盖了“文本-文本”和“文本-图像”两条路径配合本文的选型对比可以直接用于语义搜索与推荐场景。延伸阅读均在当前仓库内ai_similarity.md本文的主体参考文档ai_search.mdAI.SEARCH语义搜索与 autonomous embedding 建表vector_search.mdVECTOR_SEARCH最近邻检索ai_generate_embedding.mdAI.GENERATE_EMBEDDING嵌入生成remote_models.md远程模型创建、可用端点与连接使用方式SKILL.mdBigQuery AI ML Skill 的完整函数参考目录【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表