在AI大模型时代,如何将企业内部知识库与强大的语言模型相结合,打造智能问答系统?本文将带您深入了解如何利用 BladePipe 数据集成平台和 OpenAI,零代码构建基于 RAG (Retrieval-Augmented Generation) 架构的聊天机器人。通过两个简单的 DataJob,您就能拥有自己的RAG服务,无需编写任何代码!
RAG:连接知识与智能的关键桥梁
RAG,即检索增强生成,是一种将检索模块与生成模块相结合的自然语言处理范式。它首先通过检索模块从知识库中找到与用户查询相关的文档片段,然后将这些片段作为上下文输入到生成模块,生成更准确、更具信息量的答案。传统的RAG实现通常需要编写大量的代码,并涉及复杂的框架,例如LangChain。但BladePipe通过RagApi极大地简化了这一过程。
BladePipe RagApi:零代码RAG方案的理想选择
与传统的RAG搭建方式相比,BladePipe RagApi 提供了诸多独特的优势:
- 极简部署:仅需两个 DataJob 即可完成 RAG 服务的构建:一个用于导入和向量化文档,另一个用于创建 API 服务。
- 零代码操作:无需编写任何代码,只需通过配置即可完成整个流程。
- 参数可调:您可以根据实际需求调整向量检索的 top-K 值、匹配阈值、提示词模板、模型温度等参数,以优化问答效果。
- 多模型与平台兼容:BladePipe 支持 DashScope (阿里云)、OpenAI、DeepSeek 等多种模型和服务,为您提供更灵活的选择。
- OpenAI 兼容 API:无缝集成现有聊天应用和工具,无需额外设置。
实战案例:基于BladePipe文档的智能问答服务
为了更好地展示 BladePipe RagApi 的强大功能,我们将以 BladePipe 自身的文档作为知识库,创建一个 RAG 问答服务。
准备工作
- BladePipe:用于构建和管理 RagApi 服务。您可以通过 Docker 或二进制文件安装 BladePipe Worker。
- PostgreSQL:作为向量数据库,用于存储文档的向量化表示。
- Embedding 模型:OpenAI 的
text-embedding-3-large
模型,用于将文档转化为向量。 - Chat 模型:OpenAI 的
GPT-4o
模型,用于生成最终的回答。
详细步骤
-
安装 BladePipe
按照 BladePipe 官方文档中的指引(Install Worker (Docker) 或 Install Worker (Binary))下载并安装 BladePipe Worker。
-
准备资源
- 登录 OpenAI API 平台,创建 API 密钥。
- 安装本地 PostgreSQL 实例。可以使用 Docker Compose 快速部署 PostgreSQL:
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
运行
docker-compose up --build
命令启动 PostgreSQL 容器。然后,通过docker exec -it pgvector-db psql -U root -d api
命令访问 PostgreSQL。
创建一个具有足够权限的用户,并切换到目标 schema(例如public
)。
运行以下 SQL 语句启用向量功能:CREATE EXTENSION IF NOT EXISTS vector;
-
添加数据源
登录 BladePipe Cloud,点击 “DataSource” > “Add DataSource”。
-
添加文件数据源:选择 “Self Maintenance” > “SshFile”。填写以下参数:
-
Address:存储文件的机器 IP 地址和 SSH 端口(默认为 22)。
-
Account & Password:机器的用户名和密码。
-
fileSuffixArray:设置为
.md
,以包含 Markdown 文件。 -
dbsJson:复制默认值并修改 schema 值,指向目标文件的根目录。例如:
[ { "db": "cc_virtual_fs", "schemas": [ { "schema": "/tmp/cloudcanal-doc-v2/locales", "tables": [] } ] } ]
-
-
添加向量数据库:选择 “Self Maintenance” > “PostgreSQL”,填写连接信息。
-
添加 LLM:选择 “Independent Cloud Platform” > “Manually Fill” > “OpenAI”,填写 OpenAI API 密钥。
-
添加 RagApi 服务:选择 “Self Maintenance” > “RagApi”。
- Address:设置 host 为
localhost
,port 为18089
。 - API Key:创建一个您自己的 API 密钥,稍后使用。
- Address:设置 host 为
-
-
DataJob 1:向量化数据
- 进入 “DataJob” > “Create DataJob”。
- 选择 source:
SshFile
,target:PostgreSQL
,并测试连接。 - 选择 “Full Data” 作为 DataJob Type。保持 specification 为默认值(2 GB)。
- 在 “Tables” 页面,选择您要处理的 Markdown 文件,然后点击 “Batch Modify Target Names” > “Unified table name”,并填写表名(例如
vector_store
)。 - 在 “Data Processing” 页面,点击 “Set LLM” > “OpenAI”,选择您的 OpenAI 实例和 embedding 模型 (
text-embedding-3-large
)。
然后,点击 “Batch Operation” > “LLM embedding”。选择要嵌入的字段,并勾选 “Select All”。通常选择文档的内容部分,例如正文。 - 在 “Creation” 页面,点击 “Create DataJob”。
-
DataJob 2:构建 RagApi 服务
- 进入 “DataJob” > “Create DataJob”。
- 选择 source:
PostgreSQL
(存储向量),target:RagApi
,并测试连接。 - 选择 “Incremental” 作为 DataJob Type。保持 specification 为默认值(2 GB)。增量模式适用于后续文档更新,初次创建可以选择Full Data。
- 在 “Tables” 页面,选择向量表。
- 在 “Data Processing” 页面,点击 “Set LLM”:
- Embedding LLM:选择 OpenAI 和 embedding 模型(例如
text-embedding-3-large
)。请确保 PostgreSQL 中的向量维度与 embedding 模型匹配。 - Chat LLM:选择 OpenAI 和 chat 模型(例如
GPT-4o
)。
- Embedding LLM:选择 OpenAI 和 embedding 模型(例如
- 在 “Creation” 页面,点击 “Create DataJob” 完成设置。
测试
您可以使用 CherryStudio(一款支持 OpenAI 兼容 API 的可视化工具)测试 RagApi。
- 打开 CherryStudio,点击左下角的设置图标。
- 在 “Model Provider” 下,搜索 “OpenAI” 并配置:
- API Key:您在 BladePipe 中配置的 RagApi 密钥。
- API Host:
http://localhost:18089
。 - Model ID:
BP_RAG
。
- 返回聊天页面:
- 点击 “Add Assistant” > “Default Assistant”。
- 右键点击 “Default Assistant” > “Edit Assistant” > “Model Settings”,选择
BP_RAG
作为默认模型。
- 现在,尝试提问: “How to create an incremental DataJob in BladePipe?”。RagApi 将搜索您的向量数据库,并使用 chat 模型生成答案。
RAG的关键参数配置:提升问答效果
在BladePipe中配置RAG流程时,有几个关键参数需要特别关注,它们直接影响到问答的准确性和效率。
- Top-K检索数量: 这是指从向量数据库中检索到的最相关的文档片段数量。增加Top-K可以提供更全面的上下文信息,但也会增加计算成本和可能引入噪声。一般来说,可以从5到20之间进行尝试,找到一个平衡点。例如,对于技术文档,Top-K设置为10可能效果较好,而对于更广泛的知识库,Top-K设置为15或20可能更合适。
- 匹配阈值(Similarity Threshold): 匹配阈值决定了文档片段与用户查询的相关性要求。设置过高的阈值可能导致检索不到任何结果,而设置过低的阈值可能引入大量不相关的上下文。这个值通常在0.7到0.95之间,具体取决于embedding模型的质量和知识库的内容。
- Prompt模板(Prompt Template): Prompt模板是引导LLM生成答案的关键。一个好的Prompt模板应该清晰地指示LLM的角色、任务和输出格式。例如,可以采用如下模板:
你是一个专业的问答机器人,你的任务是根据提供的上下文回答用户的问题。如果上下文中没有相关信息,请回答“我不知道”。
上下文:
{context}
问题:
{question}
答案:
根据实际情况调整Prompt模板,可以显著提升LLM的回答质量。
- 模型温度(Temperature): 模型温度控制LLM生成答案的随机性。较低的温度会使LLM生成更确定性的答案,而较高的温度会增加答案的多样性。对于需要精确回答的场景,建议将温度设置为较低的值(例如0.2),而对于需要创造性回答的场景,可以适当提高温度(例如0.7)。
通过精心调整这些参数,可以显著提升RAG问答服务的性能和用户体验。
向量数据库选型:PostgreSQL的优势
在RAG架构中,向量数据库扮演着至关重要的角色,负责存储和检索文档的向量化表示。虽然市面上存在多种向量数据库,例如Pinecone、Milvus等,但PostgreSQL凭借其独特的优势,成为BladePipe RAG解决方案的理想选择。
- 成熟稳定: PostgreSQL是一款成熟稳定的开源关系型数据库,拥有广泛的用户群体和活跃的社区支持。这保证了数据库的可靠性和可维护性。
- 与BladePipe无缝集成: BladePipe可以轻松连接PostgreSQL数据库,实现数据的快速导入和向量化。
- 成本效益: 相对于云托管的向量数据库,自建PostgreSQL数据库可以显著降低成本,特别是在数据量较大时。
- 可扩展性: PostgreSQL支持多种扩展方式,例如分片、复制等,可以满足不同规模的应用需求。
- pgvector扩展: PostgreSQL的pgvector扩展提供了强大的向量存储和检索功能,支持多种距离度量方式,例如余弦相似度、欧氏距离等。
当然,PostgreSQL也有其局限性。例如,在高并发查询场景下,其性能可能不如专门的向量数据库。但是,对于大多数中小规模的RAG应用来说,PostgreSQL已经足够胜任。
Embedding模型选择:OpenAI text-embedding-3-large的优势
Embedding模型负责将文本转换为向量表示,是RAG架构中的核心组件之一。选择合适的embedding模型对于提升问答的准确性至关重要。OpenAI的text-embedding-3-large
模型凭借其卓越的性能,成为BladePipe RAG解决方案的首选。
- 高精度:
text-embedding-3-large
模型在多个文本相似度评估基准上取得了领先成绩,能够准确捕捉文本的语义信息。 - 长文本支持: 该模型支持较长的文本输入,可以处理包含丰富信息的文档。
- 易于使用: OpenAI提供了简单易用的API,可以轻松地将
text-embedding-3-large
模型集成到BladePipe中。 - 多语言支持:
text-embedding-3-large
模型支持多种语言,可以用于构建多语言RAG应用。 - 可定制性: 可以通过微调
text-embedding-3-large
模型,使其更适应特定的领域和任务。
虽然text-embedding-3-large
模型的API调用成本相对较高,但其卓越的性能和易用性使其成为RAG应用的理想选择。
总结
借助 BladePipe 的 RagApi,我们可以轻松地构建基于 RAG 架构的智能问答服务,而无需编写任何代码。这种零代码的解决方案极大地降低了 GenAI 的使用门槛,使得企业能够快速利用自身的数据资产,构建更智能的应用。从向量化数据、连接向量数据库,到配置LLM、生成Prompt,再到部署 OpenAI 兼容的 API,只需几个简单的步骤即可完成。无论您是希望构建基于内部知识库的问答机器人,还是希望为现有应用增加智能问答功能,BladePipe 都是一个值得考虑的强大工具。随着GenAI技术的不断发展,BladePipe 将继续为用户提供更便捷、更强大的数据集成和应用构建能力。