RAG SQL

本文为您介绍检索增强生成RAG系统相关SQL函数。

polar_ai.ai_rag_chunking

对二进制文档内容进行解析和分段。

语法说明

polar_ai.ai_rag_chunking(
    content BYTEA,
    doctype TEXT,
    deploymentName TEXT DEFAULT 'RAG',
    saveType TEXT DEFAULT 'binary',
    options JSONB DEFAULT NULL
)
RETURNS SETOF record (chunk_id INTEGER, chunk_content TEXT)

参数说明

参数

类型

是否必须

默认值

描述

content

BYTEA

-

文档的二进制内容。

doctype

TEXT

-

文档类型,如pdfwordexcel

deploymentName

TEXT

RAG

RAG服务的部署名称。

saveType

TEXT

binary

文档类型,如txturlbinary

options

JSONB

NULL

分段选项,以JSON格式提供。例如'{ "chunkSize": 512, "chunkOverlap": 64 }'

  • chunkSize:每个切片的最大长度(单位:字节)。默认值128

  • chunkOverlap:相邻切片间的重叠长度(单位:字节)。

  • separator:用于切分文本的分隔符,默认用空格分割。

  • headersToSplitOn:Markdown文件按标题等级分段。

    • 取值范围:[-1, 6],默认-1。

    • 当值为-1时:对文件中所有层级标题进行分块。

    • 当值为其他值时:如x时,对文件中小于等于x层级的标题进行分块。

示例

-- 使用默认选项进行分段
SELECT * FROM polar_ai.ai_rag_chunking(content, 'pdf');

-- 自定义 chunkSize 和 chunkOverlap
SELECT * FROM polar_ai.ai_rag_chunking(content, 'pdf', options := '{"chunkSize": 512, "chunkOverlap": 64}');

polar_ai.ai_rag_text_embedding

将文本内容转换为向量。

说明

需先调用polar_ai.ai_nl2sql_deployModel('RAG');进行模型部署。

语法说明

polar_ai.ai_rag_text_embedding(
    content TEXT,
    model TEXT DEFAULT 'Qwen-8B-embedding',
    dimension INTEGER DEFAULT 1024,
    deploymentName TEXT DEFAULT 'RAG'
)
RETURNS float4[]

参数说明

参数

类型

是否必需

默认值

描述

content

TEXT

-

需要向量化的文本内容。

model

TEXT

Qwen-8B-embedding

使用的向量化模型。取值范围如下:

  • Qwen-8B-embedding

  • GTE

dimension

INTEGER

1024

生成的向量维度。需与数据表中VECTOR列定义的维度严格一致,否则会导致插入或查询错误。

  • Qwen-8B-embedding: 2048、1536、1024(默认)、768、512、256、128、64。

  • GTE:768

deploymentName

TEXT

RAG

RAG服务的部署名称。

示例

-- 生成一个 1024 维的向量
select polar_ai.ai_rag_text_embedding('It is a lovely film with lovely performances.');
-- 返回结果
{0.15527344,-0.09667969,-0.08984375,-0.13476562,0.087890625,-0.09423828, ....}

polar_ai.ai_rag_rerank

对检索到的文本片段列表根据与问题的相关性进行重排序。

说明

需先调用polar_ai.ai_nl2sql_deployModel('RAG');进行模型部署。

语法说明

polar_ai.ai_rag_rerank(
    question TEXT,
    contents TEXT[],
    deploymentName TEXT DEFAULT 'RAG',
    rankerModel TEXT DEFAULT 'gte'
)
RETURNS TEXT[]

参数说明

参数

类型

是否必需

默认值

描述

question

TEXT

-

原始问题。

contents

TEXT[]

-

需要进行重排序的文本片段数组。

deploymentName

TEXT

RAG

RAG服务的部署名称。

rankerModel

TEXT

gte

使用的重排序模型。取值范围如下:

  • gte

  • Qwen3-Reranker

示例

-- 对一个文本数组进行重排序
SELECT polar_ai.ai_rag_rerank(
    '你喜欢吃什么水果?',
    ARRAY['苹果', '水晶', '足球', '香蕉']
);
-- 返回结果
{'苹果','香蕉','水晶','足球'}