【极简实战】用博查AI Search + Python+DeepSeek打造你的私有知识库!无需Elasticsearch,三步搞定RAG!
通过本文的学习,已经掌握了简单的本地+联网增强搜索并使用DeepSeek生成回答的简单RAG功能啦!赶快自己动手尝试一下吧!前往博查AI开放平台领取API Key查看往期教程👇,构建完整RAG应用链《用Python玩转博查Web Search API》《Semantic Reranker API:搜索结果智能排序》《Dify+博查API:零代码搭建RAG应用》让AI告别“古董知识库”,拥抱实时智
·
无需复杂架构!不用学Elasticsearch!本文教你用纯Python+博查API,30行代码搭建一个高精度问答系统,本地文件、网页结果一键融合!
一、核心思路:用文件+API实现“混合检索”
极简设计图
用户提问 → 本地知识库搜索 → 博查API搜索 → 结果合并 → 生成答案
优势:
- 本地文件快速检索(txt/csv等)
- 博查API补充实时网页结果
- 零第三方依赖,代码控制在100行内
二、手把手实现:三模块代码拆解
2.1 模块1:本地知识库检索(纯Python实现)
场景:搜索本地knowledge.txt
中的内容
def search_local(query: str, file_path: str) -> list:
results = []
with open(file_path, 'r', encoding='utf-8') as f:
for line in f:
if query in line:
results.append(f"[本地] {line.strip()}")
if len(results) >= 3: # 最多返回3条
break
return results
# 测试:本地文件内容为"深度学习需要掌握Python、PyTorch..."
local_hits = search_local("深度学习", "knowledge.txt")
print("本地结果:", local_hits)
输出示例:
本地结果: ['[本地] 深度学习需要掌握Python、PyTorch...']
2.2 模块2:博查API实时搜索(10行代码)
import requests
def search_web(query: str, api_key: str) -> list:
url = "https://api.bochaai.com/v1/web-search"
headers = {"Authorization": f"Bearer {api_key}"}
payload = {"query": query, "count": 3, "summary": True}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
return [f"[网页] {item['snippet']}" for item in response.json()['data']['webPages']['value']]
return []
# 测试:搜索实时内容
web_hits = search_web("深度学习最新技术", "sk-你的密钥")
print("网页结果:", web_hits[:1]) # 示例输出第一条
输出示例:
网页结果: ['[网页] 深度学习之所以重要,是因为随着数据量的增加和计算能力变得更加强大和经济实惠,遍布零售、医疗保健、运输、制造、技术和其他行业的公司将投资深度 学习来推动创新、解锁机会并与时俱进。深度学习的工作原理是依赖于多个层中的神经网络...']
2.3 模块3:结果聚合与答案生成(LangChain最小化实现)
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
def generate_answer(query: str, local_hits: list, web_hits: list) -> str:
# 无需LangChain复杂流程!直接拼接上下文
context = "\n".join(local_hits + web_hits)
prompt = f"""
你是一个AI助手,请根据以下信息回答问题:
{context}
问题:{query}
回答要求:列出要点,每点不超过20字
"""
# 测试时使用伪模型代码,实战时可以切换为真实模型代码
class SimpleModel:
def invoke(self, text):
return "1. 掌握Python基础\n2. 学习PyTorch框架\n3. 关注多模态趋势"
return SimpleModel().invoke(prompt)
# 示例调用
answer = generate_answer("如何学习深度学习?", local_hits, web_hits)
print("最终答案:\n", answer)
输出示例:
最终答案:
1. 掌握Python基础
2. 学习PyTorch框架
3. 关注多模态趋势
三、项目实战:搭建命令行问答工具
3.1 完整代码(50行极简版)
import requests
import argparse
from openai import OpenAI
class QASystem:
def __init__(self, api_key: str, local_file: str, model: str = "deepseek-chat"):
self.api_key = api_key
self.local_file = local_file
self.model = model
self.client = OpenAI(api_key="你的DeepSeek KEY", base_url="https://api.deepseek.com/v1")
def search_local(self, query: str) -> list:
hits = []
with open(self.local_file, 'r', encoding='utf-8') as f:
for line in f:
if query in line:
hits.append(f"[本地] {line.strip()}")
if len(hits) >= 3:
break
return hits
def search_web(self, query: str) -> list:
url = "https://api.bochaai.com/v1/web-search"
headers = {"Authorization": f"Bearer {self.api_key}"}
payload = {"query": query, "count": 3}
response = requests.post(url, headers=headers, json=payload)
return [f"[网页] {item['snippet']}" for item in response.json().get('data', {}).get('webPages', {}).get('value', [])] if response.ok else []
def generate_answer(self, query: str, context: list) -> str:
prompt = f"基于以下信息回答问题:\n{chr(10).join(context)}\n\n问题:{query}\n答案:"
response = self.client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": "你是一个智能问答助手。"},
{"role": "user", "content": prompt}
]
)
return "\n".join([
"基于以下信息生成答案:",
*context,
"\n答案精简版:",
"1. 结合本地知识与最新网页结果",
"2. 具体内容需根据实际搜索调整",
"\n",
response.choices[0].message.content if response.choices else "无法生成答案"
])
def answer(self, query: str) -> str:
context = self.search_local(query) + self.search_web(query)
return self.generate_answer(query, context)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--query", type=str, required=True)
parser.add_argument("--api_key", type=str, required=True)
parser.add_argument("--local_file", type=str, default="knowledge.txt")
parser.add_argument("--model", type=str, default="deepseek-chat")
args = parser.parse_args()
qa = QASystem(args.api_key, args.local_file, args.model)
print(qa.answer(args.query))
3.2 运行演示
步骤1:创建本地知识库文件knowledge.txt
深度学习需要Python和PyTorch基础
Transformer模型是NLP的核心
步骤2:执行命令行问答
python qa_system.py --api_key sk-你的密钥 --query "如何入门深度学习"
输出效果:
基于以下信息生成答案:
[网页] 理解深度学习的内部运作可能同样令人困惑。虽然功能性 AI 模型的数学和开发非常广泛,但可以将总体思路分解为更简单的步骤,以了解如何开始您的旅程。让我们回顾 一下从哪里开始掌握人工智能和深度学习的复杂主题的基础知识。一句话概括什么是深度学习?深度学习是一种让计算机自行学习和做出决策的方式,它通过对大量数据进行训练,并使用模仿人脑结构的复杂神经网络来执行复杂的任务。深度学习的目标是大规模获...
[网页] 入门深度学习可以分为以下几个步骤:基础知识准备:(1)掌握基础数学知识,特别是线性代数、概率论和统计学、微积分。(2)学习编程语言,Python 是目前最流行的深度学习语言,因其简洁易学且有大量的库支持。 (3)了解机器学习基础,包括监督学习和非...
[网页] 第一步:理解深度学习基本概念 第二步:选择合适的编程语言和工具 第三步:学习线性代数和微积分基础 第四步:掌握机器学习基础知识
答案精简版:
1. 结合本地知识与最新网页结果
2. 具体内容需根据实际搜索调整
入门深度学习可以按照以下步骤进行:
1. **理解深度学习基本概念**:首先了解深度学习的基础原理,包括其如何通过模仿人脑结构的神经网络从数据中学习并做出决策。
2. **掌握基础数学知识**:重点学习线性代数、概率论与统计学、微积分,这些是理解深度学习模型和算法的数学基础。
3. **学习编程语言**:选择Python作为编程语言,因为它简洁易学且有丰富的深度学习库(如TensorFlow、PyTorch)支持。
4. **了解机器学习基础**:掌握机器学习的基本概念,例如监督学习和非监督学习,这是深度学习的重要前置知识。
5. **选择合适的工具和框架**:熟悉常用的深度学习工具和框架,如TensorFlow或PyTorch,并通过实践项目巩固知识。
6. **实践与项目应用**:通过实际项目和练习应用所学知识,逐步提升深度学习的实战能力。
通过以上步骤,可以系统性地入门深度学习并逐步掌握其复杂主题。
答案精简版:
1. 结合本地知识与最新网页结果
2. 具体内容需根据实际搜索调整
五、总结
通过本文的学习,已经掌握了简单的本地+联网增强搜索并使用DeepSeek生成回答的简单RAG功能啦!赶快自己动手尝试一下吧!
立即行动:
前往博查AI开放平台领取API Key
查看往期教程👇,构建完整RAG应用链
🔗 系列文章推荐:
《Semantic Reranker API:搜索结果智能排序》
让AI告别“古董知识库”,拥抱实时智能新时代!🚀
更多推荐
所有评论(0)