第一步  首先设计项目知识图谱构建初步思路

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 添加知识点

每个知识点都有 titlecategorycontenttags 等信息,存储在 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)意图识别

  • 存储意图 → 解析内容 → 存入知识库
  • 检索意图 → 搜索知识库 → 返回匹配结果
  • 普通问答 → 直接回答

大模型分析:

  1. 用户问:"Python 是什么?"识别为检索 → 搜索知识库
  2. 用户说:"添加 Python 语法入知识库"识别为存储 → 存入知识库
  3. 用户问:"你是谁?"普通对话 → 直接回答

(3)知识库存储 / 检索

  • NetworkX 知识图谱 结构化存储
  • 大模型辅助检索,增加语义匹配能力

(4)语音合成

  • 使用 gTTSEdge 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")  # 语音输入

可能的执行流程:

  1. 用户说:"添加 Python 语法入知识库"

    • Whisper 识别为 "添加 Python 语法入知识库"
    • DeepSeek 识别意图 "store"
    • GPT 解析 "Python 语法" 知识点并存入 NetworkX 知识库
    • 语音反馈 "已成功存入知识库"
  2. 用户说:"Python 是什么?"

    • Whisper 识别 "Python 是什么?"
    • DeepSeek 识别 "search"
    • 在知识库查询 "Python"
    • 语音反馈 "Python 是一种流行的编程语言"
  3. 用户说:"今天天气怎么样?"

    • Whisper 识别 "今天天气怎么样?"
    • DeepSeek 识别 "chat"
    • 直接调用 GPT 生成答案
    • 语音反馈 "请问你在哪个城市?"

4. 潜在的优化点

功能 优化方案
改进语音识别 使用 Vosk(离线)、Whisper large 模型
语义检索 使用 FAISSHaystack 进行相似度搜索
知识增强 结合 Neo4j 作为图数据库存储
交互优化 使用 Streamlit / Flask 作为 Web 界面

5. 阶段项目总结

实现语音输入 → 知识存储 / 检索 / 问答 → 语音反馈
自动化知识库构建,支持智能语音交互
可扩展,支持更复杂的知识图谱管理 🚀

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐