本文为您介绍检索增强生成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)参数说明
参数 | 类型 | 是否必须 | 默认值 | 描述 |
|
| 是 | - | 文档的二进制内容。 |
|
| 是 | - | 文档类型,如 |
|
| 否 |
| RAG服务的部署名称。 |
|
| 否 |
| 文档类型,如 |
|
| 否 |
| 分段选项,以JSON格式提供。例如
|
示例
-- 使用默认选项进行分段
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[]参数说明
参数 | 类型 | 是否必需 | 默认值 | 描述 |
|
| 是 | - | 需要向量化的文本内容。 |
|
| 否 |
| 使用的向量化模型。取值范围如下:
|
|
| 否 |
| 生成的向量维度。需与数据表中
|
|
| 否 |
| 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[]参数说明
参数 | 类型 | 是否必需 | 默认值 | 描述 |
|
| 是 | - | 原始问题。 |
|
| 是 | - | 需要进行重排序的文本片段数组。 |
|
| 否 |
| RAG服务的部署名称。 |
|
| 否 |
| 使用的重排序模型。取值范围如下:
|
示例
-- 对一个文本数组进行重排序
SELECT polar_ai.ai_rag_rerank(
'你喜欢吃什么水果?',
ARRAY['苹果', '水晶', '足球', '香蕉']
);
-- 返回结果
{'苹果','香蕉','水晶','足球'}