AI安全知识库

一个开源的、结构化的、可搜索的AI安全知识库,支持安全感知代理、MCP工具和对齐研究工作流程。

  • by Jack0319
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Jack0319/ai-safety-kb

使用说明

AI安全知识库

一个开源、精心策划、结构化和可搜索的人工智能安全语料库,为安全感知代理、MCP工具和对齐研究工作流程提供支持。

此存储库提供什么

  • 摄入管道 将对齐论坛帖子、arXiv论文、AI事件数据库条目、治理报告和内部文档规范化为一个具有来源、版本控制和源记录的统一模式。
  • 存储层 基于SQL数据库(SQLite用于开发,Postgres+pgvector用于生产)构建,具有块级嵌入和元数据过滤器。
  • 源注册表+目录 因此,每个文档都可以追溯到每个源记录,包括摄取模式、状态、文档计数和规范URL。自动生成 sources_catalog.md 保持一个动态的“链接”页面与注册表同步。
  • 检索API (safety_kb.retrieval)暴露异步帮助程序,例如 search, get_document, get_chunks_for_document, search_by_topic,以及 list_topics这些函数返回MCP工具可以直接包装的Pydantic模型。
  • 公用事业 用于分块、文本清理、嵌入管理、日志记录和摄取编排。
  • 测试和迁移 在KB扩展到数万个文档和数百万个块时保持其稳定。

项目布局

ai-safety-knowledge-base/
├── env.example                # Copy to .env to override defaults
├── pyproject.toml             # PEP 621 metadata + dependencies
├── README.md
├── migrations/
│   └── 001_init.sql           # Reference SQL definition for Postgres/pgvector
├── src/
│   └── safety_kb/
│       ├── __init__.py
│       ├── config.py          # Settings + helpers
│       ├── models.py          # Pydantic domain models
│       ├── schemas.py         # SQLAlchemy ORM tables
│       ├── storage.py         # Async persistence helpers
│       ├── retrieval.py       # Public KB API
│       ├── indexing.py        # Ingestion + indexing orchestration
│       ├── sources/           # Source-specific fetchers
│       ├── catalog.py         # Source catalog generator (produces sources_catalog.md)
│       └── utils/             # Text cleaning, chunking, embeddings, logging, checksums
└── tests/
    ├── test_indexing.py
    ├── test_ingestion_sources.py
    └── test_retrieval.py

入门指南

  1. 安装依赖项

    pip install -e .
    
  2. 配置设置

    复制 env.example 到 .env (或设置环境变量)并更新值,例如 SAFETY_KB_DATABASE_URL 以及嵌入提供者配置。

  3. 创建数据库

    对于本地开发人员:

    python3 -m safety_kb.storage --init-db
    

    对于生产Postgres,请申请 migrations/001_init.sql 并确保 pgvector 已启用。

  4. 运行测试

    pytest
    
  5. 通过目录或本地文件添加新源

    • Web链接:编辑 sources_catalog.md 并添加具有源名称、种类(例如。, website),模式,以及最后一列中的Markdown超链接。

    • 地方文献:drop .txt, .md, .html,或 .pdf 文件进入 sources/files/.

    • 然后运行:

      python3 -m safety_kb.catalog_sync --catalog sources_catalog.md --sources-dir sources/files
      

      此命令:

      1. 解析目录行,扰乱这些源,以及( website 种类)获取/摄取它们的内容。
      2. 在以下位置发现新文件 sources/files/,摄取它们,并使用工作超链接将行添加到目录中。
      3. 重新生成 sources_catalog.md 来自实时注册表,因此页面始终反映实际摄入的内容。

    提交摄入的文件(如果需要)和刷新的目录。

与MCP集成

这 safety_kb.retrieval 模块特意设计得很薄,以便MCP工具定义保持简单:

from safety_kb.retrieval import search, get_document

@server.tool(name="kb.search")
async def kb_search(request):
    results = await search(
        query=request.input["query"],
        k=request.input.get("k", 5),
        filters=request.input.get("filters", {}),
    )
    return {"results": [r.model_dump() for r in results]}

路线图

  • 添加生产级摄入连接器(校准论坛、arXiv、AIID等)。
  • 扩展可观察性(度量、结构化日志、跟踪)。
  • 支持缓存嵌入和使用workers(Celery/Arq)排队摄取。
  • 引入更先进的重新排序(交叉编码器)和混合BM25+ANN管道。