
前言
想象你问计算机:“谁在 2023 年 NBA 总决赛中得分最多?”然后它能直接、流畅地给出有数据支撑的答案。这就是 Retrieval-Augmented Generation(RAG)的魔力:结合检索与 AI 文本生成,让 AI 能够依据知识库回答自然语言问题。
本文将教你如何用 RAG 加上 PostgreSQL 数据库,搭建你自己的 NBA 问答系统,并在本地运行。我们会用到:
bge-m3用于文本嵌入(embedding)- PostgreSQL +
pgvector用于语义相似搜索 gemma3:12b用于自然语言生成- Ollama 本地运行环境,支持 OpenAI 风格 API
无论你是篮球迷、开发者,还是想学习 AI 的入门者,这篇文章都将是你构建智能体育助手的第一步。
什么是 RAG?
RAG 是 Retrieval-Augmented Generation(检索增强生成)的缩写,它结合了两个核心组件:
- Retriever(检索器):从知识库中查找相关文档或信息;
- Generator(生成器):使用大型语言模型(LLM)基于检索结果生成回答。
这种组合方式将数据库的准确性与语言模型的表达能力结合起来,使 AI 回答更可靠、更自然。

你可以提出哪些 NBA 问题?
NBA 数据丰富,适合做语义搜索与问答系统。以下是一些常见问题类型:
- 数据查询类:Curry 在 2022 年投进了多少个三分球?
- 对比类:2023 季后赛中 Luka 和 Trae 谁的助攻更多?
- 趋势类:2024 年 3 月 Lakers 哪位球员得分最多?
- 历史类:勇士队上一次夺冠是哪一年?
一步步搭建你的 NBA 问答系统
第一步:使用 bge-m3 生成嵌入向量
bge-m3 是一款多语言、多任务的向量模型,用于语义搜索。它可以将一句话转换为 1024 维的向量,例如:
“2023 年总决赛得分王是谁?”
转化为:
[0.021, -0.033, ..., 0.008]
本地运行:
ollama pull bge-m3
ollama serve
使用 OpenAI API 格式调用:
import requests
res = requests.post("http://localhost:11434/v1/embeddings", json={
"model": "bge-m3",
"input": "2023 年 NBA 总决赛谁得分最多?"
})
embedding = res.json()

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



