语义搜索与ML训练基础设施

提供马克思主义-列宁主义AI系统的语义向量搜索和GRPO微调基础设施。

  • by percy-raskova
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 percy-raskova/pw-mcp

使用说明

pw-mcp

ProleWiki MCP服务器和ML培训基础设施-语义向量搜索和GRPO微调,用于马克思列宁主义人工智能系统。

概述

该项目提供了两种互补的能力:

  1. MCP 服务器:针对AI助手的ProleWiki语料库(约5000篇文章)的语义搜索
  2. ML培训:GRPO微调基础设施,以创建马克思列宁主义语言模型

主要特点:

  • 百科全书文章、图书馆书籍和散文的语义搜索
  • 多提供商嵌入(OpenAI text-embedding-3-large 或当地Ollama)
  • 语义分界线通过 sembr 用于智能组块
  • 具有丰富元数据的ChromaDB矢量存储
  • GRPO培训体系 1165对精选问答
  • JSON模式验证 用于培训数据质量保证
  • 具有细粒度任务的可组合流水线

快速开始

# Install dependencies
uv sync

# Run the MCP server
uv run pw-mcp

数据摄取管道

该管道将MediaWiki导出转换为可搜索的向量嵌入:

prolewiki-exports/ → extracted/ → sembr/ → chunks/ → embeddings/ → ChromaDB
     (source)        (clean text)  (line-   (para-    (vectors)    (indexed)
                                   broken)   graphs)

管道命令(通过mise)

# Check pipeline status
mise run status

# Run full pipeline
mise run pipeline

# Run individual stages
mise run extract          # MediaWiki → clean text
mise run sembr            # Add semantic line breaks
mise run chunk            # Split into paragraphs
mise run embed            # Generate embeddings
mise run load             # Load into ChromaDB

# Resume interrupted pipeline (skips existing files)
mise run pipeline-continue

# Test with sample files
mise run pipeline-sample

嵌入提供者

mise run embed-openai     # OpenAI API (requires OPENAI_API_KEY)
mise run embed-ollama     # Local Ollama (requires running Ollama server)

Sembr 服务器

语义换行需要运行sembr服务器:

mise run sembr-server     # Start on GPU 0
mise run sembr-server-gpu1  # Start on GPU 1
mise run sembr-stop       # Stop server
mise run sembr-check      # Check server health

人工智能培训基础设施

这 training_data/ 目录包含一个严格的ML训练系统:

数据集

文件 记录 目的
curated_qa.jsonl 1058 ProleWiki语料库中的人工策划问答
synthetic_antisemitism_correction.jsonl 61 反犹太复国主义/反犹太主义的区别
synthetic_cpc_ml_distinction.jsonl 34 CPC与ML的理论清晰度
synthetic_prolewiki_facts.jsonl 12 ProleWiki组织事实

架构和验证

  • JSON模式(2020-12) 培训记录: training_data/schema/
  • 扬 SHA256校验和可重复性
  • 验证脚本: uv run python scripts/validate_training_data.py

培训笔记本

用于RunPod/云GPU训练的自包含Jupyter笔记本:

  • Marxist_GRPO_Training.ipynb -GRPO主培训笔记本
  • TRL_Direct_GRPO_Training.ipynb -TRL原生GRPO实现

文档

  • MODEL_CARD.yaml -数据集来源和来源分布
  • TRAINING_DIARY.md -培训迭代和发现的问题
  • ai-docs/training-schema.yaml -人类可读的模式参考

发展

# Install with dev dependencies
uv sync --group dev

# Install pre-commit hooks
uv run pre-commit install

# Run tests
mise run test             # All tests
mise run test-unit        # Unit tests only
mise run test-cov         # With coverage

# Code quality
mise run check            # Lint + typecheck
mise run pre-commit       # All pre-commit hooks

项目结构

pw-mcp/
├── src/pw_mcp/
│   ├── server.py              # MCP server entry point
│   ├── config.py              # Pydantic configuration
│   ├── ingest/                # Ingestion pipeline
│   │   ├── cli.py             # pw-ingest CLI
│   │   ├── extraction.py      # Article extraction pipeline
│   │   ├── parsers/           # MediaWiki parsers
│   │   ├── chunker.py         # Tiktoken-based chunking
│   │   └── embedder.py        # Embedding generation
│   ├── db/
│   │   └── chroma.py          # ChromaDB interface
│   └── ai_training/           # GRPO training module
│       ├── grpo_rewards.py    # Reward functions
│       └── wandb_logging.py   # W&B integration
├── training_data/             # ML training datasets
│   ├── *.jsonl                # Training Q&A pairs
│   ├── schema/                # JSON Schema definitions
│   ├── MANIFEST.yaml          # Dataset inventory
│   └── MODEL_CARD.yaml        # Dataset documentation
├── ai-docs/                   # AI reference documentation (YAML)
├── scripts/                   # Utility scripts
├── tests/
├── prolewiki-exports/         # Source corpus (gitignored)
└── chroma_data/               # ChromaDB persistence (gitignored)

配置

复制 .env.example 到 .env 并配置:

OPENAI_API_KEY=sk-...         # For OpenAI embeddings
OLLAMA_HOST=http://localhost:11434  # For local Ollama

数据

ProleWiki语料库(prolewiki-exports/)是 不包括 应ProleWiki工作人员的要求,在这个存储库中。管道输出目录(extracted/, sembr/, chunks/, embeddings/, chroma_data/)也被忽略了,但它们的结构通过 .gitkeep 文件夹。

要获取语料库,请直接联系ProleWiki或使用其公共导出工具。

致谢

  • ProleWiki -提供源语料库的马克思列宁主义百科全书。特别感谢他们的工作人员对数据使用的指导。
  • 色度数据库 -支持语义搜索的AI原生开源向量数据库。
  • 克劳德·梅 -Claude Code的跨会话内存插件,有助于在开发过程中维护上下文。
  • sembr -智能文本分块的语义换行模型。

开发人员说明

AI模型

人工智能模型尚未准备好公开发布。我希望通过实施严格的测试来对人工智能开发和模型开发采取负责任的方法,并记录训练数据,作为对机器学习社区的贡献。这是一个独特的项目。大多数人工智能寻求意识形态的“中立性”,尽管当然不存在这种中立性。我采取了相反的方法:我微调意识形态的连贯性!无论如何,这项研究对机器学习社区具有巨大的价值潜力。但伴随着潜力而来的是责任。在这个时候,我不舒服地释放重量和度量。

当充分的测试和红队证明仓库可以使用时,一个版本将被标记并作为存储库工件发布。

许可证

AGPL-3.0-参见 许可证