16 KiB
16 KiB
title, created, updated, type, tags, sources_count, confidence, last_confirmed, status, relationships, detail
| title | created | updated | type | tags | sources_count | confidence | last_confirmed | status | relationships | detail | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LLM Wiki v2 参考文档 | 2026-04-13 | 2026-04-15 | core-component |
|
1 | 0.85 | 2026-04-15 | active |
|
混合搜索系统 |
📚 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)
置信度字段结构
---
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
---
衰减算法
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)
实体类型定义
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)
事件注册表
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}
]
}
定时任务调度
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)
搜索评分算法
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
查询重写策略
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"},
]
⚙️ 配置与部署
配置文件结构
# ~/.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"
环境变量
# 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/..."
初始化脚本
#!/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 数据
# 备份整个 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 组件
# 创建新配置目录
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: 迁移数据
# 运行迁移脚本
python -m llm_wiki_v2.migrate \
--v1_path ./airport-wiki \
--v2_path ./airport-wiki-v2 \
--mode incremental
步骤 4: 验证迁移
# 检查置信度字段
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)
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"}
}
}
告警规则
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"]
监控仪表板
- 搜索性能仪表板:响应时间、命中率、用户满意度
- 知识质量仪表板:平均置信度、冲突数量、更新频率
- 系统健康仪表板:自动化成功率、存储使用率、错误率
🛠️ 故障排除
常见问题及解决方法
| 问题 | 症状 | 解决方案 |
|---|---|---|
| 置信度不衰减 | 页面置信度长期不变 | 检查定时任务是否运行;验证衰减算法参数 |
| 搜索结果差 | 相关页面排名靠后 | 调整搜索权重;重新生成嵌入;检查索引 |
| 自动化钩子失败 | 文件变更未触发处理 | 验证文件监视配置;检查权限;查看日志 |
| 实体关系缺失 | 页面无关系链接 | 运行实体提取;检查关系检测规则 |
| 嵌入生成失败 | 页面无嵌入向量 | 检查模型加载;验证文本编码;查看错误日志 |
诊断命令
# 检查系统状态
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
参考文献
- Karpathy, A. "LLM: A Personal Knowledge Base"
- Luhmann, N. "Zettelkasten Method"
- Ahrens, S. "How to Take Smart Notes"
- Vannevar Bush, "As We May Think"
版本: v2.1.0 | 最后更新: 2026-04-13
维护状态: 活跃 | 支持: 用户文档 + 技术支持论坛
注意: 本系统持续演进,建议定期查看相关文档获取最新信息。