You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
AI Function 智能处理(rds_ai)
语义检索(ai_retrieve)
复制全文
下载 pdf
语义检索(ai_retrieve)
  1. 定义​
rds_ai.ai_retrieve 将问题文本转换为查询向量,并在指定表的向量列中按距离检索最相关的行。​
  1. 语法​
  • 返回单个文本列​
​
rds_ai.ai_retrieve(​
question text,​
source_schema text,​
source_table text,​
chunk_col text,​
vector_col text,​
topn integer DEFAULT 10,​
distance_type text DEFAULT 'cosine',​
embed_model text DEFAULT NULL,​
embed_args jsonb DEFAULT '{}'::jsonb​
) RETURNS TABLE(chunk text, distance double precision)​
​
  • 返回多个列组成的 JSONB​
​
rds_ai.ai_retrieve(​
question text,​
source jsonb,​
return_cols text[],​
options jsonb DEFAULT '{}'::jsonb​
) RETURNS TABLE(payload jsonb, distance double precision)​
​
  1. 参数​
​
参数​
默认值​
说明​
question​
无​
用于生成查询向量的问题文本,不得为 SQL NULL。​
source_schema​
无​
来源表所在 schema。​
source_table​
无​
来源表名称。​
chunk_col​
无​
返回的文本列名称。​
vector_col​
无​
用于距离计算的 vector、halfvec 或 sparsevec 列。​
topn​
10​
最多返回的行数,必须大于 0。​
distance_type​
cosine​
距离类型:cosine、l2、l1 或 negative。​
embed_model​
SQL NULL​
embedding 模型;NULL 时解析 ai_embed 默认模型。​
embed_args​
{}​
传给 ai_embed 的请求体参数 JSON 对象。​
source​
无​
JSONB 重载的数据源对象,必须且只能包含 source_schema、source_table、chunk_col、embed_col。​
return_cols​
无​
写入 payload 的一维非空列名数组;不得包含空值或重复列。​
options​
{}​
仅支持 topn、distance_type、embed_model、embed_args、version;当前 version 仅支持 1.0。​
​
  1. 返回​
  • 表列重载返回 chunk text 和 distance double precision。​
  • JSONB 重载返回 payload jsonb 和 distance double precision;payload 由 return_cols 指定的列组成。​
  • 结果按距离从小到大排列;negative 使用负内积距离。​
  1. 错误行为​
  • 模型未配置、不存在、类型不兼容,或 embedding 返回值无法转换为目标向量类型时抛出错误。​
  • 数据源对象、选项、topn、距离类型或返回列不合法时抛出参数错误。​
  • schema、表、列、pgvector 扩展或对应距离运算符不存在时抛出错误。​
  • 两个重载均为 SECURITY INVOKER;调用者缺少来源列的 SELECT 权限时抛出权限错误,RLS 会限制可见行。​
  • HTTP、白名单、超时、响应大小、并发和 token 配额错误按 ai_embed 的行为传播。​
  1. 示例​
  • 返回单个文本列​
​
SELECT chunk, distance​
FROM rds_ai.ai_retrieve(​
question => 'How does vector search work?',​
source_schema => 'public',​
source_table => 'doc_chunks',​
chunk_col => 'content',​
vector_col => 'embedding',​
topn => 2,​
embed_model => 'Doc-Embed'​
);​
​
  • 返回多个业务列​
​
SELECT payload, distance​
FROM rds_ai.ai_retrieve(​
'How does vector search work?',​
'{"source_schema":"public","source_table":"doc_chunks","chunk_col":"content","embed_col":"embedding"}'::jsonb,​
ARRAY['id', 'content'],​
'{"topn":2,"embed_model":"Doc-Embed"}'::jsonb​
);​
​
​
最近更新时间:2026.10.21 12:50:07
这个页面对您有帮助吗?
有用
有用
无用
无用