零代码构建 RAG 私有知识问答服务
· 阅读需 7 分钟
在之前的文章中,我们已经厘清了 GenAI 的关键概念:RAG、Function Calling、MCP、AI Agent。接下来的问题在于,如何从概念到实操?
目前,网上可以搜到很多 RAG 构建教程,但大部分教程都基于 LangChain 等,对小白来说仍有一定的入门门槛。
CloudCanal 本身作为数据同步平台,已经具备多源异构数据的接入与加工能力,在 RAG 系统构建语义搜索基础方面具备天然优势。近期 CloudCanal 推出的 RagApi 封装了向量检索与模型问答能力,为用户提供一个即插即用的智能查询接口。只需在 CloudCanal 中创建两个任务,即可获得你的专属 RAG 服务,全程无需使用代码。
CloudCanal RagApi 优势
相比传统 RAG 架构手动部署流程,CloudCanal 提供的 RagApi 服务具有以下独特优势:
- 双任务完成全流程:文档导入 + API 发布。
- 零代码部署:无需开发,自定义配置即可构建 API 服务。
- 参数可调:支持设置向量 Top-K 数量、匹配阈值、Prompt 模板、模型温度等核心参数。
- 多模型与平台适配:支持阿里云 DashScope、OpenAI、DeepSeek 等主流模型与 API 平台。
- OpenAI API 兼容接口:直接接入现有 Chat 应用或工具链,无需额外适配。
实例演示
本文将以 CloudCanal 官方文档为知识库,构建关于 CloudCanal 产品的 RAG 问答服务。
先展示效果:
创建这样一个 RAG 私有知识问答服务,需要用到:
- CloudCanal:自动创建 RagApi 服务
- PostgreSQL:向量数据库
- 嵌入模型:阿里云百炼平台(DashScope)的 text-embedding-v3
- 对话模型:阿里云百炼平台(DashScope)的 qwq-plus
整体工作流程如下:
操作步骤
下载 CloudCanal
下载安装 CloudCanal 私有部署版本。
准备资源
- 登录 阿里云百炼 并创建 API-KEY。
- 本地安装免费的 PostgreSQL 数据库
#!/bin/bash
# 创建 docker-compose.yml 文件
cat <<EOF > docker-compose.yml
version: "3"
services:
db:
container_name: pgvector-db
hostname: 127.0.0.1
image: pgvector/pgvector:pg16
ports:
- 5432:5432
restart: always
environment:
- POSTGRES_DB=api
- POSTGRES_USER=root
- POSTGRES_PASSWORD=123456
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
EOF
# 自动执行 docker-compose 启动
docker-compose up --build
# 进入 PG 命令行
docker exec -it pgvector-db psql -U root -d api
- 创建高权限账号并登录。
- 切换到需要建表的目标 schema (如
public
)。 - 执行以下 SQL 开启向量能力。
CREATE EXTENSION IF NOT EXISTS vector;
添加数据源
登录 CloudCanal 平台,点击 数据源管理 > 新增数据源。
添加文件:
选择 自建 > SshFile 数据源,可设定额外参数。
- 网络地址:填写目标文件所在机器和 SSH 端口(默认 22)。
- 账号密码:即登录目标机器的用户名、密码。
- 参数 fileSuffixArray:填写
.md
以过滤出所有 markdown 文件。 - 参数 dbsJson:复制默认值并修改 schema 值(即目标文件所在根目录)。
[
{
"db":"cc_virtual_fs",
"schemas":[
{
"schema":"/Users/johnli/source/cloudcanal-doc-v2",
"tables":[]
}
]
}
]
添加向量数据库:
选择 自建 > PostgreSQL,获取数据源并添加。
添加大模型:
选择 阿里云 > 手动填写 > DashScope 数据源,填写之前步骤获取的 API-KEY。
添加 RagApi 服务:
选择 自建 > RagApi。
- 网络地址:填写为
localhost
,端口默认使用18089
。 - API 密钥:自定义一个 API-KEY,用于后续调用 RagApi 接口。