561 lines
16 KiB
Markdown
561 lines
16 KiB
Markdown
---
|
||
title: LLM Wiki v2 参考文档
|
||
created: 2026-04-13
|
||
updated: 2026-04-15
|
||
type: core-component
|
||
tags: [llm-wiki, v2, reference, architecture]
|
||
sources_count: 1
|
||
confidence: 0.85
|
||
last_confirmed: 2026-04-15
|
||
status: active
|
||
relationships:
|
||
- target: concepts/knowledge-management/hybrid-search.md
|
||
detail: "混合搜索系统"
|
||
---
|
||
# 📚 LLM Wiki v2 参考文档
|
||
|
||
**机场智能化工程知识库的架构与技术实现指南**
|
||
|
||
基于 Karpathy 的 LLM Wiki 理念,v2 版本引入了**动态知识管理**、**智能检索**和**自动化维护**三大核心能力。本文档详细说明架构设计、实现原理和配置方法。
|
||
|
||
> **v2 核心理念**:知识是动态的有机体,需要随时间衰减、冲突整合和持续验证,而非静态的文档集合。
|
||
|
||
---
|
||
|
||
## 🏗️ 架构总览
|
||
|
||
### 系统分层架构
|
||
```
|
||
应用层 (Application Layer)
|
||
├── 搜索引擎 (Hybrid Search Engine)
|
||
├── 关系图谱 (Knowledge Graph Browser)
|
||
└── 质量看板 (Quality Dashboard)
|
||
|
||
核心层 (Core Layer)
|
||
├── 自动化钩子系统 (Automation Hooks)
|
||
├── 置信度衰减引擎 (Confidence Decay Engine)
|
||
├── 冲突检测处理器 (Conflict Detection Processor)
|
||
└── 自我纠正机制 (Self-correction Mechanism)
|
||
|
||
存储层 (Storage Layer)
|
||
├── 向量数据库 (Vector Database) # 嵌入存储
|
||
├── 文档存储 (Document Store) # Markdown/YAML
|
||
└── 关系数据库 (Relational Database) # 实体关系
|
||
```
|
||
|
||
### 数据流向
|
||
```
|
||
新来源 → 解析 → 实体提取 → 事实提取 → 冲突检测 → 置信度评估 → 存储
|
||
↓ ↓ ↓ ↓ ↓
|
||
现有知识 ← 整合 ← 关系更新 ← 冲突解决 ← 置信度衰减 ← 质量验证 ← 定期任务
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 核心组件详解
|
||
|
||
### 1. **置信度系统 (Confidence System)**
|
||
#### 置信度字段结构
|
||
```yaml
|
||
---
|
||
confidence: 0.85 # 当前置信度 (0.1-1.0)
|
||
sources_count: 3 # 引用来源数量
|
||
last_confirmed: 2026-04-13 # 最后一次确认/更新
|
||
confidence_history: # 置信度变化历史
|
||
- date: 2026-04-10
|
||
value: 0.80
|
||
reason: "new_source_added"
|
||
- date: 2026-04-12
|
||
value: 0.83
|
||
reason: "conflict_resolved"
|
||
- date: 2026-04-13
|
||
value: 0.85
|
||
reason: "weekly_decay_applied"
|
||
decay_factors: # 衰减因子权重
|
||
time: 0.60
|
||
usage: 0.20
|
||
sources: 0.15
|
||
conflicts: 0.05
|
||
---
|
||
```
|
||
|
||
#### 衰减算法
|
||
```python
|
||
def decay_confidence(current, age_days, usage_freq, sources_cnt, conflicts_cnt):
|
||
# 基础时间衰减(每月5%)
|
||
base_decay = 0.95 ** (age_days / 30)
|
||
|
||
# 强化因子(使用频率和来源数量)
|
||
reinforcement = (usage_freq * 0.3) + (min(sources_cnt, 5) * 0.05)
|
||
|
||
# 应用衰减
|
||
new_confidence = current * base_decay + (1 - base_decay) * reinforcement
|
||
|
||
# 冲突惩罚
|
||
new_confidence -= 0.05 * conflicts_cnt
|
||
|
||
# 边界处理
|
||
return max(0.05, min(1.0, new_confidence))
|
||
```
|
||
|
||
### 2. **实体图管理系统 (Entity Graph Management)**
|
||
#### 实体类型定义
|
||
```python
|
||
ENTITY_TYPES = {
|
||
"airport": {
|
||
"attributes": ["code", "name", "location", "capacity", "status"],
|
||
"relationships": {
|
||
"uses": ["technology", "system", "vendor"],
|
||
"located_in": ["region", "country"],
|
||
"implements": ["standard", "certification"]
|
||
}
|
||
},
|
||
"technology": {
|
||
"attributes": ["category", "vendor", "version", "specs"],
|
||
"relationships": {
|
||
"used_by": ["airport", "system"],
|
||
"compatible_with": ["technology"],
|
||
"replaces": ["technology"]
|
||
}
|
||
},
|
||
"vendor": {
|
||
"attributes": ["name", "country", "specialization", "market_share"],
|
||
"relationships": {
|
||
"provides": ["technology", "service"],
|
||
"competes_with": ["vendor"],
|
||
"partners_with": ["vendor"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 关系类型
|
||
| 关系类型 | 语义 | 反向关系 | 示例 |
|
||
|----------|------|----------|------|
|
||
| **uses** | 使用 | used_by | 深圳机场 uses SITA AODB |
|
||
| **implements** | 实现 | implemented_by | JFK implements ACI EUROPE 2020 |
|
||
| **replaces** | 替换 | replaced_by | H100 replaces A100 |
|
||
| **based_on** | 基于 | basis_for | 数字孿生 based_on BIM 模型 |
|
||
| **compatible_with** | 兼容 | compatible_with | RoCE compatible_with InfiniBand |
|
||
| **partners_with** | 合作 | partners_with | SITA partners_with Huawei |
|
||
|
||
### 3. **自动化钩子系统 (Automation Hooks)**
|
||
#### 事件注册表
|
||
```python
|
||
HOOK_REGISTRY = {
|
||
"source_added": [
|
||
{"callback": "parse_source", "priority": 10},
|
||
{"callback": "extract_entities", "priority": 9},
|
||
{"callback": "detect_conflicts", "priority": 8},
|
||
{"callback": "update_confidence", "priority": 7}
|
||
],
|
||
"page_updated": [
|
||
{"callback": "check_semantic_change", "priority": 10},
|
||
{"callback": "update_embeddings", "priority": 9},
|
||
{"callback": "propagate_relations", "priority": 8},
|
||
{"callback": "log_change", "priority": 5}
|
||
],
|
||
"query_executed": [
|
||
{"callback": "record_query_pattern", "priority": 10},
|
||
{"callback": "evaluate_results", "priority": 8},
|
||
{"callback": "generate_suggestions", "priority": 5}
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 定时任务调度
|
||
```python
|
||
SCHEDULE_CONFIG = {
|
||
"daily": {
|
||
"time": "02:30",
|
||
"tasks": [
|
||
"verify_recent_changes",
|
||
"update_recommendations",
|
||
"clean_temp_files",
|
||
"backup_incremental"
|
||
]
|
||
},
|
||
"weekly": {
|
||
"time": "03:00",
|
||
"day": "sunday",
|
||
"tasks": [
|
||
"run_lint_check",
|
||
"decay_confidence_scores",
|
||
"regenerate_embeddings",
|
||
"rebuild_search_index"
|
||
]
|
||
},
|
||
"monthly": {
|
||
"time": "04:00",
|
||
"day": 1, # 每月1日
|
||
"tasks": [
|
||
"archive_stale_content",
|
||
"evaluate_embedding_models",
|
||
"analyze_growth_trends",
|
||
"run_security_audit"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4. **混合搜索系统 (Hybrid Search System)**
|
||
#### 搜索评分算法
|
||
```python
|
||
def calculate_search_score(page, query, user_context):
|
||
# 1. 文本相关性 (BM25)
|
||
text_relevance = bm25_score(page.content, query)
|
||
|
||
# 2. 语义相关性 (嵌入相似度)
|
||
semantic_relevance = embedding_similarity(page.embedding, query_embedding)
|
||
|
||
# 3. 置信度调整
|
||
confidence_adjustment = page.confidence ** 2
|
||
|
||
# 4. 时效性调整
|
||
recency_adjustment = 1.0 / (1 + page.age_days / 180)
|
||
|
||
# 5. 个性化调整
|
||
personalization = calculate_personalization_score(page, user_context)
|
||
|
||
# 综合评分 (加权)
|
||
score = (
|
||
text_relevance * 0.4 +
|
||
semantic_relevance * 0.4 +
|
||
confidence_adjustment * 0.15 +
|
||
recency_adjustment * 0.05 +
|
||
personalization * 0.1
|
||
)
|
||
|
||
return score
|
||
```
|
||
|
||
#### 查询重写策略
|
||
```python
|
||
QUERY_REWRITE_RULES = [
|
||
# 同义词扩展
|
||
{"pattern": r"\bgpu\b", "expansion": "gpu OR graphics processing unit OR ai accelerator"},
|
||
|
||
# 技术缩写扩展
|
||
{"pattern": r"\baodb\b", "expansion": "aodb OR airport operational database"},
|
||
|
||
# 机场代码映射
|
||
{"pattern": r"\bSZX\b", "expansion": "SZX OR Shenzhen Bao'an International Airport"},
|
||
{"pattern": r"\bJFK\b", "expansion": "JFK OR New York John F. Kennedy Airport"},
|
||
|
||
# 单位标准化
|
||
{"pattern": r"(\d+)\s*kw", "expansion": "$1 kW OR $1 kilowatt"},
|
||
{"pattern": r"(\d+)\s*MW", "expansion": "$1 MW OR $1 megawatt"},
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ 配置与部署
|
||
|
||
### 配置文件结构
|
||
```yaml
|
||
# ~/.hermes/ObsidianVault/airport-wiki/config.yaml
|
||
|
||
llm_wiki:
|
||
version: "2.1.0"
|
||
|
||
confidence:
|
||
decay_rate: 0.05 # 每月衰减率
|
||
min_confidence: 0.05
|
||
max_confidence: 1.0
|
||
usage_weight: 0.2
|
||
sources_weight: 0.15
|
||
|
||
automation:
|
||
enabled: true
|
||
check_interval_seconds: 15 # 文件监视间隔
|
||
max_workers: 3
|
||
|
||
search:
|
||
hybrid_enabled: true
|
||
vector_weight: 0.4
|
||
keyword_weight: 0.4
|
||
confidence_weight: 0.15
|
||
recency_weight: 0.05
|
||
query_expansion: true
|
||
|
||
entities:
|
||
types: ["airport", "technology", "vendor", "standard", "system"]
|
||
relation_types: ["uses", "implements", "replaces", "based_on", "compatible_with"]
|
||
|
||
storage:
|
||
vector_db: "chromadb"
|
||
doc_store: "filesystem"
|
||
graph_db: "sqlite"
|
||
|
||
monitoring:
|
||
metrics_enabled: true
|
||
alerting_enabled: true
|
||
log_level: "info"
|
||
```
|
||
|
||
### 环境变量
|
||
```bash
|
||
# LLM Wiki 核心配置
|
||
export LLM_WIKI_HOME="/home/windy/.hermes/ObsidianVault/airport-wiki"
|
||
export EMBEDDING_MODEL="all-MiniLM-L6-v2"
|
||
export VECTOR_DB_HOST="localhost"
|
||
export VECTOR_DB_PORT=8000
|
||
|
||
# 自动化钩子
|
||
export HOOKS_ENABLED="true"
|
||
export HOOKS_CHECK_INTERVAL="15"
|
||
export HOOKS_MAX_WORKERS="3"
|
||
|
||
# 监控和日志
|
||
export LOG_LEVEL="info"
|
||
export METRICS_PORT="9090"
|
||
export ALERT_WEBHOOK="https://hooks.slack.com/services/..."
|
||
```
|
||
|
||
### 初始化脚本
|
||
```bash
|
||
#!/bin/bash
|
||
# init_llm_wiki_v2.sh
|
||
|
||
# 1. 检查依赖
|
||
check_dependencies() {
|
||
echo "检查依赖..."
|
||
python3 --version >/dev/null 2>&1 || { echo "需要 Python 3.8+"; exit 1; }
|
||
pip --version >/dev/null 2>&1 || { echo "需要 pip"; exit 1; }
|
||
}
|
||
|
||
# 2. 安装 Python 包
|
||
install_packages() {
|
||
echo "安装 Python 包..."
|
||
pip install -r requirements.txt
|
||
}
|
||
|
||
# 3. 初始化数据库
|
||
init_databases() {
|
||
echo "初始化数据库..."
|
||
python -c "from storage import init_db; init_db()"
|
||
}
|
||
|
||
# 4. 生成初始嵌入
|
||
generate_initial_embeddings() {
|
||
echo "生成初始嵌入..."
|
||
python -c "from embeddings import generate_all_embeddings; generate_all_embeddings()"
|
||
}
|
||
|
||
# 5. 启动服务
|
||
start_services() {
|
||
echo "启动服务..."
|
||
|
||
# 启动文件监视服务
|
||
python -m hooks.file_watcher &
|
||
|
||
# 启动定时任务调度器
|
||
python -m hooks.scheduler &
|
||
|
||
# 启动监控服务
|
||
python -m monitoring.metrics_server &
|
||
}
|
||
|
||
main() {
|
||
echo "=== LLM Wiki v2 初始化 ==="
|
||
|
||
check_dependencies
|
||
install_packages
|
||
init_databases
|
||
generate_initial_embeddings
|
||
start_services
|
||
|
||
echo "✅ 初始化完成"
|
||
echo "监控面板: http://localhost:9090"
|
||
echo "搜索端点: http://localhost:8000/search"
|
||
}
|
||
|
||
main "$@"
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 升级与迁移
|
||
|
||
### 从 v1 升级到 v2
|
||
#### 步骤 1: 备份 v1 数据
|
||
```bash
|
||
# 备份整个 wiki 目录
|
||
tar -czf wiki_v1_backup_$(date +%Y%m%d).tar.gz airport-wiki/
|
||
|
||
# 导出实体关系
|
||
python -c "from v1_exporter import export_all; export_all('v1_export.json')"
|
||
```
|
||
|
||
#### 步骤 2: 安装 v2 组件
|
||
```bash
|
||
# 创建新配置目录
|
||
mkdir -p ~/.hermes/ObsidianVault/airport-wiki/concepts/knowledge-management
|
||
|
||
# 安装 v2 Python 包
|
||
pip install llm-wiki-v2
|
||
|
||
# 初始化 v2 数据库
|
||
python -m llm_wiki_v2.init --config config.yaml
|
||
```
|
||
|
||
#### 步骤 3: 迁移数据
|
||
```bash
|
||
# 运行迁移脚本
|
||
python -m llm_wiki_v2.migrate \
|
||
--v1_path ./airport-wiki \
|
||
--v2_path ./airport-wiki-v2 \
|
||
--mode incremental
|
||
```
|
||
|
||
#### 步骤 4: 验证迁移
|
||
```bash
|
||
# 检查置信度字段
|
||
python -c "from validation import check_migration; check_migration('airport-wiki-v2')"
|
||
|
||
# 测试搜索功能
|
||
curl -X POST "http://localhost:8000/search" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"query": "GPU cluster power consumption", "limit": 5}'
|
||
```
|
||
|
||
### 数据迁移策略
|
||
| 数据类型 | v1 格式 | v2 格式 | 迁移方法 |
|
||
|----------|---------|---------|----------|
|
||
| **页面内容** | 纯 Markdown | Markdown + YAML frontmatter | 解析并添加置信度字段 |
|
||
| **实体关系** | 链接(无类型) | 类型化关系 | 提取文本关系并分类 |
|
||
| **嵌入向量** | 无 | 向量数据库 | 重新生成所有嵌入 |
|
||
| **搜索索引** | 文件搜索 | 混合搜索索引 | 重建索引 |
|
||
|
||
---
|
||
|
||
## 📊 监控与告警
|
||
|
||
### 关键性能指标 (KPIs)
|
||
```python
|
||
KPI_CONFIG = {
|
||
"search": {
|
||
"response_time_p95": {"threshold": 3000, "unit": "ms"},
|
||
"success_rate": {"threshold": 0.95, "unit": "%"},
|
||
"recall_at_5": {"threshold": 0.85, "unit": "%"}
|
||
},
|
||
"confidence": {
|
||
"average_confidence": {"threshold": 0.7, "unit": "score"},
|
||
"decay_rate": {"threshold": 0.1, "unit": "/month"},
|
||
"conflict_resolution_rate": {"threshold": 0.9, "unit": "%"}
|
||
},
|
||
"automation": {
|
||
"hook_success_rate": {"threshold": 0.95, "unit": "%"},
|
||
"processing_time_p95": {"threshold": 5000, "unit": "ms"},
|
||
"backlog_size": {"threshold": 100, "unit": "items"}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 告警规则
|
||
```yaml
|
||
alerts:
|
||
- name: "search_degradation"
|
||
condition: "search_response_time_p95 > 3000 OR search_success_rate < 0.95"
|
||
severity: "critical"
|
||
actions: ["page_oncall", "rollback_search_config"]
|
||
|
||
- name: "confidence_anomaly"
|
||
condition: "average_confidence < 0.6 OR decay_rate > 0.15"
|
||
severity: "high"
|
||
actions: ["notify_maintainer", "run_verification"]
|
||
|
||
- name: "automation_failure"
|
||
condition: "hook_success_rate < 0.9 OR backlog_size > 200"
|
||
severity: "medium"
|
||
actions: ["log_incident", "restart_workers"]
|
||
```
|
||
|
||
### 监控仪表板
|
||
- **搜索性能仪表板**:响应时间、命中率、用户满意度
|
||
- **知识质量仪表板**:平均置信度、冲突数量、更新频率
|
||
- **系统健康仪表板**:自动化成功率、存储使用率、错误率
|
||
|
||
---
|
||
|
||
## 🛠️ 故障排除
|
||
|
||
### 常见问题及解决方法
|
||
| 问题 | 症状 | 解决方案 |
|
||
|------|------|----------|
|
||
| **置信度不衰减** | 页面置信度长期不变 | 检查定时任务是否运行;验证衰减算法参数 |
|
||
| **搜索结果差** | 相关页面排名靠后 | 调整搜索权重;重新生成嵌入;检查索引 |
|
||
| **自动化钩子失败** | 文件变更未触发处理 | 验证文件监视配置;检查权限;查看日志 |
|
||
| **实体关系缺失** | 页面无关系链接 | 运行实体提取;检查关系检测规则 |
|
||
| **嵌入生成失败** | 页面无嵌入向量 | 检查模型加载;验证文本编码;查看错误日志 |
|
||
|
||
### 诊断命令
|
||
```bash
|
||
# 检查系统状态
|
||
python -m llm_wiki_v2.status --full
|
||
|
||
# 查看日志
|
||
tail -f ~/.hermes/logs/llm_wiki.log
|
||
|
||
# 手动触发维护任务
|
||
python -m hooks.runner --task weekly_maintenance
|
||
|
||
# 检查数据库完整性
|
||
python -c "from storage import verify_integrity; verify_integrity()"
|
||
|
||
# 重置错误状态
|
||
python -m llm_wiki_v2.reset --component hooks
|
||
```
|
||
|
||
---
|
||
|
||
## 🔮 未来发展方向
|
||
|
||
### 近期计划 (1-3个月)
|
||
- **智能答案生成**:基于查询自动生成综合答案
|
||
- **预测性维护**:基于历史模式预测知识老化
|
||
- **多模态支持**:图像、图表等非文本内容处理
|
||
- **用户行为分析**:优化搜索和推荐系统
|
||
|
||
### 中期计划 (3-12个月)
|
||
- **跨wiki知识同步**:多个wiki之间的知识共享
|
||
- **自适应学习**:系统自动调整参数和规则
|
||
- **自然语言更新**:用户用自然语言编辑知识
|
||
- **实时协作**:多用户同时编辑和注释
|
||
|
||
### 长期愿景 (1年以上)
|
||
- **自主知识管理**:系统完全自主维护和优化知识库
|
||
- **预测性内容创建**:基于趋势预测自动创建新内容
|
||
- **智能决策支持**:基于知识库提供决策建议
|
||
- **认知增强**:与人类思维深度协同的知识系统
|
||
|
||
---
|
||
|
||
## 📚 相关资源
|
||
|
||
### 官方文档
|
||
- [[SCHEMA.md]] - 架构定义和设计规范
|
||
- [[concepts/knowledge-management/automation-hooks.md]] - 自动化钩子详细实现
|
||
- [[concepts/knowledge-management/knowledge-lifecycle.md]] - 知识生命周期管理
|
||
- [[concepts/knowledge-management/quality-control.md]] - 质量控制机制
|
||
- [[concepts/knowledge-management/knowledge-graph.md]] - 实体图管理
|
||
- [[concepts/knowledge-management/hybrid-search.md]] - 混合搜索系统
|
||
|
||
### 工具和库
|
||
- **向量数据库**: ChromaDB, Qdrant, Weaviate
|
||
- **嵌入模型**: all-MiniLM-L6-v2, BGE, OpenAI embeddings
|
||
- **搜索引擎**: Elasticsearch, Meilisearch, Typesense
|
||
- **监控**: Prometheus, Grafana, OpenTelemetry
|
||
|
||
### 参考文献
|
||
1. Karpathy, A. "LLM: A Personal Knowledge Base"
|
||
2. Luhmann, N. "Zettelkasten Method"
|
||
3. Ahrens, S. "How to Take Smart Notes"
|
||
4. Vannevar Bush, "As We May Think"
|
||
|
||
---
|
||
|
||
> **版本**: v2.1.0 | **最后更新**: 2026-04-13
|
||
> **维护状态**: 活跃 | **支持**: 用户文档 + 技术支持论坛
|
||
> **注意**: 本系统持续演进,建议定期查看相关文档获取最新信息。 |