
如何开发一个基于DeepSeek AI大模型的语音交互个人知识库管理系统
第一步 首先设计项目知识图谱构建初步思路
1. 项目概述
本解决方案基于 NetworkX
构建 个人知识库管理系统,将知识点作为 节点(Nodes),关系作为 边(Edges),从而实现:
- 知识点的存储、关联、检索
- 关系网络分析(如最短路径、中心性)
- 知识图谱的可视化
2. 系统架构
数据模型
- 知识点(Node)
id
:唯一标识符title
:知识点名称category
:类别(技术/哲学/科学等)tags
:标签(可选)content
:知识内容timestamp
:添加时间
- 关系(Edge)
source -> target
:知识点之间的关联relationship_type
:关系类型("引用"、"相关"、"包含")weight
:关系强度(可选)
3. 代码实现
3.1 创建知识库管理系统
import networkx as nx
import matplotlib.pyplot as plt
import json
import time
class KnowledgeGraph:
def __init__(self):
self.G = nx.DiGraph() # 有向图存储知识点关系
def add_knowledge(self, id, title, category, content, tags=None):
"""添加知识点"""
self.G.add_node(id, title=title, category=category, content=content,
tags=tags or [], timestamp=time.time())
def add_relation(self, source, target, relation_type, weight=1):
"""建立知识点之间的关系"""
if source in self.G and target in self.G:
self.G.add_edge(source, target, relationship_type=relation_type, weight=weight)
else:
print("错误:知识点不存在!")
def display_graph(self):
"""可视化知识图谱"""
plt.figure(figsize=(10, 6))
pos = nx.spring_layout(self.G)
labels = {node: self.G.nodes[node]['title'] for node in self.G.nodes}
nx.draw(self.G, pos, with_labels=True, labels=labels, node_color='lightblue', edge_color='gray')
edge_labels = nx.get_edge_attributes(self.G, 'relationship_type')
nx.draw_networkx_edge_labels(self.G, pos, edge_labels=edge_labels)
plt.show()
def search_knowledge(self, keyword):
"""搜索知识点"""
results = [n for n, data in self.G.nodes(data=True) if keyword.lower() in data['title'].lower()]
return results
def find_shortest_path(self, start, end):
"""查找两个知识点之间的最短路径"""
if nx.has_path(self.G, start, end):
return nx.shortest_path(self.G, source=start, target=end)
else:
return None
def export_data(self, filename="knowledge.json"):
"""导出知识库为 JSON"""
data = {
"nodes": {n: self.G.nodes[n] for n in self.G.nodes},
"edges": [(u, v, self.G.edges[u, v]) for u, v in self.G.edges]
}
with open(filename, "w", encoding="utf-8") as f:
json.dump(data, f, indent=4, ensure_ascii=False)
print(f"知识库已导出到 {filename}")
def load_data(self, filename="knowledge.json"):
"""导入 JSON 格式的知识库"""
with open(filename, "r", encoding="utf-8") as f:
data = json.load(f)
for node, attributes in data["nodes"].items():
self.G.add_node(node, **attributes)
for u, v, attributes in data["edges"]:
self.G.add_edge(u, v, **attributes)
print(f"知识库已从 {filename} 加载")
# 示例
kg = KnowledgeGraph()
kg.add_knowledge("A", "Python 基础", "编程", "Python 是一种高级编程语言", ["Python", "编程"])
kg.add_knowledge("B", "数据结构", "计算机科学", "数据结构是计算机的核心概念", ["计算机", "数据结构"])
kg.add_knowledge("C", "机器学习", "人工智能", "机器学习用于模式识别和数据分析", ["AI", "机器学习"])
kg.add_relation("A", "B", "相关")
kg.add_relation("B", "C", "包含")
kg.display_graph()
# 搜索知识点
print(kg.search_knowledge("数据"))
# 查找最短路径
print(kg.find_shortest_path("A", "C"))
# 导出和导入数据
kg.export_data()
kg.load_data()
4. 关键功能解析
4.1 添加知识点
每个知识点都有 title
、category
、content
、tags
等信息,存储在 NetworkX
节点属性中。
kg.add_knowledge("A", "Python 基础", "编程", "Python 是一种高级编程语言", ["Python", "编程"])
4.2 添加关系
知识点之间的关系由 add_relation
方法建立,例如:
kg.add_relation("A", "B", "相关")
kg.add_relation("B", "C", "包含")
4.3 可视化知识图谱
- 节点:知识点
- 边:关系
- 边标签:关系类型
kg.display_graph()
4.4 搜索功能
根据标题搜索知识点:
kg.search_knowledge("数据")
# 结果: ['B']
4.5 查找最短路径
kg.find_shortest_path("A", "C")
# 结果: ['A', 'B', 'C']
4.6 数据存储
可以将知识库导出到 JSON 文件:
kg.export_data("my_knowledge.json")
kg.load_data("my_knowledge.json")
5. 潜在的优化点
功能 | 方案 |
---|---|
自然语言处理 | 用 spaCy 进行知识点自动抽取 |
用户交互 | 结合 Flask/Django 作为 Web 界面 |
大规模存储 | 使用 Neo4j 进行图数据库存储 |
智能推荐 | 结合 networkx 计算节点相似度 |
6. 阶段项目进度总结
✅ 采用 NetworkX
作为核心,支持 知识管理、关系构建、可视化、搜索、路径计算。
✅ 可结合 Flask 或 Neo4j 进行扩展,实现更强大的 知识图谱管理系统。
第二步 增加语音识别模块和自动分析创建知识点功能
如果要 加入语音识别 并 使用大模型自动分析创建知识点,我们可以对项目方案修订如下:
1. 方案设计
(1)语音识别模块
-
选择 ASR(Automatic Speech Recognition)工具:
SpeechRecognition
(离线可用)OpenAI Whisper
(效果好,支持多语言)Vosk
(轻量级,支持本地)
-
功能:
- 录音或读取音频文件
- 转换成文本
- 预处理(去除噪音、分段)
(2)大模型分析
-
使用 DeepSeek /ChatGPT / Llama / Claude / Gemini 解析识别出的文本,提取:
- 知识点标题
- 知识类别
- 关键词/标签
- 关系
-
API 选择:
-
DeepSeek R1 7B (首选,推理能力强,本地部署免费,免梯子)
- OpenAI GPT(准确度高)
- Llama / Claude(支持本地部署)
-
(3)自动创建知识点
- 语音 → 文字 → 结构化知识点 → 存入
NetworkX
知识库 - 通过大模型 自动关联已有知识点
2. 代码实现
2.1 语音识别
使用 whisper
进行语音转文本:
import whisper
def transcribe_audio(audio_file):
"""使用 OpenAI Whisper 进行语音识别"""
model = whisper.load_model("base")
result = model.transcribe(audio_file)
return result["text"]
# 示例:
text = transcribe_audio("example.mp3")
print("识别文本:", text)
2.2 使用大模型提取知识点
调用 DeepSeek API 解析文本:
import openai
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")
def analyze_text(text):
"""使用 GPT 解析文本,提取知识点"""
prompt = f"""
你是一个知识图谱构建助手。请从以下文本中提取知识点:
1. 知识点名称
2. 类别
3. 关键词
4. 可能的关联关系
5. 简要内容
语音转文字内容:
{text}
请输出 JSON 格式:
{{
"title": "知识点名称",
"category": "类别",
"tags": ["关键词1", "关键词2"],
"content": "简要内容",
"relations": [
{{"target": "相关知识点1", "relationship": "包含"}},
{{"target": "相关知识点2", "relationship": "引用"}}
]
}}
"""
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是知识图谱构建助手"},
{"role": "user", "content": prompt},
],
stream=False
)
print(response.choices[0].message.content)
return response.choices[0].message.content
# 示例
text = "Python 是一种高级编程语言,广泛用于数据科学、AI 和 Web 开发。"
knowledge_point = analyze_text(text)
print(knowledge_point)
2.3 自动创建知识点
将提取的知识点存入 NetworkX
知识库:
import json
import networkx as nx
class KnowledgeGraph:
def __init__(self):
self.G = nx.DiGraph()
def add_knowledge(self, title, category, content, tags):
"""添加知识点"""
node_id = title.lower().replace(" ", "_") # 规范化 ID
self.G.add_node(node_id, title=title, category=category, content=content, tags=tags)
return node_id
def add_relation(self, source, target, relation):
"""建立关系"""
if source in self.G and target in self.G:
self.G.add_edge(source, target, relationship_type=relation)
def process_knowledge(self, knowledge_json):
"""解析 JSON 并存入知识图谱"""
data = json.loads(knowledge_json)
node_id = self.add_knowledge(data["title"], data["category"], data["content"], data["tags"])
for relation in data["relations"]:
target_id = relation["target"].lower().replace(" ", "_")
self.add_relation(node_id, target_id, relation["relationship"])
# 使用示例
kg = KnowledgeGraph()
kg.process_knowledge(knowledge_point)
2.4 语音识别 + 知识库集成
完整流程:
# 语音 → 文本
text = transcribe_audio("example.mp3")
# 文本 → 知识点
knowledge_point = analyze_text(text)
# 知识点存入知识库
kg.process_knowledge(knowledge_point)
# 可视化知识图谱
kg.display_graph()
3. 可视化增强
可以使用 pyvis
创建交互式图:
from pyvis.network import Network
def visualize_graph(kg):
net = Network(notebook=True)
for node, data in kg.G.nodes(data=True):
net.add_node(node, title=data['title'], label=data['title'])
for u, v, data in kg.G.edges(data=True):
net.add_edge(u, v, title=data['relationship_type'])
net.show("knowledge_graph.html")
visualize_graph(kg)
4. 潜在的优化点
功能 | 方案 |
---|---|
改进语音识别 | Whisper Large / Vosk 离线 |
支持长文本 | 自动拆分,按句提取 |
自动关联旧知识 | 计算节点相似度 |
Web 端展示 | Flask / Streamlit |
数据库存储 | Neo4j / SQLite |
5. 阶段项目进度总结
✅ 从语音输入,自动 转文字、解析知识点、存入知识库、可视化
✅ 结合大模型自动生成 知识图谱,支持 搜索、路径分析、关系挖掘
✅ 可扩展到 Web 端、数据库存储,形成完整的 AI 知识管理系统 🚀
第三步 完善语音识别检索和普通对话功能
到第二步为止,已经初步实现了知识库管理和语音识别自动创建知识点的功能,但仍旧需要使得系统更完善,那就需要系统具备识别普通对话意图和知识库操作的功能,而且语音识别不仅能创建知识库,还可以进行检索的功能,这样系统的用户界面就更加友好了。
完善语音对话知识库管理系统
目标:通过 语音交互 实现 知识存储、知识检索、智能问答,并通过 语音合成反馈 结果,打造完整的 AI 语音知识库管理系统。
1. 解决方案
(1)语音输入模块
- 语音 → 文字
- 使用 Whisper / SpeechRecognition
- 预处理文本(去除噪声、停用词)
(2)意图识别
- 存储意图 → 解析内容 → 存入知识库
- 检索意图 → 搜索知识库 → 返回匹配结果
- 普通问答 → 直接回答
大模型分析:
- 用户问:"Python 是什么?" → 识别为检索 → 搜索知识库
- 用户说:"添加 Python 语法入知识库" → 识别为存储 → 存入知识库
- 用户问:"你是谁?" → 普通对话 → 直接回答
(3)知识库存储 / 检索
NetworkX
知识图谱 结构化存储- 大模型辅助检索,增加语义匹配能力
(4)语音合成
- 使用
gTTS
或Edge TTS
将文本转语音,实现语音反馈
2. 代码实现
2.1 语音识别
使用 Whisper 进行语音转文字:
import whisper
def transcribe_audio(audio_file):
"""使用 OpenAI Whisper 进行语音识别"""
model = whisper.load_model("base")
result = model.transcribe(audio_file)
return result["text"]
2.2 大模型意图识别(在第二步的基础上进行修订完善)
使用 DeepSeek 大模型 进行意图判断:
import openai
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")
def analyze_intent(text):
"""分析用户意图,返回: 'store', 'search', 'chat'"""
prompt = f"""
你是一个智能助手,用户的输入可能是:
1. 需要存入知识库
2. 需要从知识库中检索信息
3. 只是普通对话
请识别用户输入,并返回 JSON 格式:
{{"intent": "store" 或 "search" 或 "chat"}}
用户输入: {text}
"""
"""
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是智能知识管理助手"},
{"role": "user", "content": prompt},
],
stream=False
)
print(response.choices[0].message.content)
return response.choices[0].message.content
# 示例
text = "添加 Python 是一种编程语言 到知识库"
intent = analyze_intent(text)
# 可能返回: {"intent": "store"}
2.3 知识存储
将大模型解析出的内容存入 知识库:
import json
import networkx as nx
class KnowledgeGraph:
def __init__(self):
self.G = nx.DiGraph()
def add_knowledge(self, title, category, content, tags):
"""添加知识点"""
node_id = title.lower().replace(" ", "_") # 规范化 ID
self.G.add_node(node_id, title=title, category=category, content=content, tags=tags)
return node_id
def search_knowledge(self, keyword):
"""检索知识点"""
results = [n for n, data in self.G.nodes(data=True) if keyword.lower() in data['title'].lower()]
return results
kg = KnowledgeGraph()
# 示例存储
kg.add_knowledge("Python", "编程", "Python 是一种流行的编程语言", ["Python", "开发"])
2.4 语音合成
使用 gTTS(Google Text-to-Speech) 进行 文本转语音(TTS):
没有梯子的可以使用 pytts3 模块替代,效果比较僵硬,但是效率高,能沟通够用就行。
from gtts import gTTS
import os
def text_to_speech(text, output_file="response.mp3"):
"""将文本转化为语音并播放"""
tts = gTTS(text=text, lang="zh")
tts.save(output_file)
os.system(f"start {output_file}") # Windows 播放
#示例
text_to_speech("你好,我是你的语音助手!")
2.5 语音交互整合
完整流程:
def voice_interaction(audio_file):
"""语音交互主流程"""
# 1. 语音识别
text = transcribe_audio(audio_file)
print(f"识别文本: {text}")
# 2. 识别意图
intent_json = analyze_intent(text)
intent = json.loads(intent_json)["intent"]
response = ""
if intent == "store":
# 解析并存入知识库
knowledge_json = analyze_text(text)
kg.process_knowledge(knowledge_json)
response = "已成功存入知识库"
elif intent == "search":
# 解析关键字并查询知识库
keyword = text.split()[-1] # 简单提取关键词
results = kg.search_knowledge(keyword)
response = f"找到以下相关知识点: {', '.join(results)}" if results else "未找到相关内容"
else:
# 普通对话
response = analyze_text(text) # 直接用 GPT 生成回答
print("语音反馈:", response)
text_to_speech(response) # 语音播放反馈
3. 运行示例
voice_interaction("user_input.mp3") # 语音输入
可能的执行流程:
-
用户说:"添加 Python 语法入知识库"
- Whisper 识别为
"添加 Python 语法入知识库"
- DeepSeek 识别意图
"store"
- GPT 解析
"Python 语法"
知识点并存入 NetworkX 知识库 - 语音反馈
"已成功存入知识库"
- Whisper 识别为
-
用户说:"Python 是什么?"
- Whisper 识别
"Python 是什么?"
- DeepSeek 识别
"search"
- 在知识库查询
"Python"
- 语音反馈
"Python 是一种流行的编程语言"
- Whisper 识别
-
用户说:"今天天气怎么样?"
- Whisper 识别
"今天天气怎么样?"
- DeepSeek 识别
"chat"
- 直接调用 GPT 生成答案
- 语音反馈
"请问你在哪个城市?"
- Whisper 识别
4. 潜在的优化点
功能 | 优化方案 |
---|---|
改进语音识别 | 使用 Vosk (离线)、Whisper large 模型 |
语义检索 | 使用 FAISS 或 Haystack 进行相似度搜索 |
知识增强 | 结合 Neo4j 作为图数据库存储 |
交互优化 | 使用 Streamlit / Flask 作为 Web 界面 |
5. 阶段项目总结
✅ 实现语音输入 → 知识存储 / 检索 / 问答 → 语音反馈
✅ 自动化知识库构建,支持智能语音交互
✅ 可扩展,支持更复杂的知识图谱管理 🚀
更多推荐
所有评论(0)