经 AI Skill Hub 精选评估,mAItion 获评「推荐使用」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
mAItion是一个开源AI工具,集成多种功能,包括聊天机器人、知识图谱等,帮助用户快速构建AI应用。
mAItion 是一款基于 Python 开发的开源工具,专注于 installable、ai、chatbot 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
mAItion是一个开源AI工具,集成多种功能,包括聊天机器人、知识图谱等,帮助用户快速构建AI应用。
mAItion 是一款基于 Python 开发的开源工具,专注于 installable、ai、chatbot 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install maition
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install maition
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/WikiTeq/mAItion
cd mAItion
pip install -e .
# 验证安装
python -c "import maition; print('安装成功')"
# 命令行使用
maition --help
# 基本用法
maition input_file -o output_file
# Python 代码中调用
import maition
# 示例
result = maition.process("input")
print(result)
# maition 配置文件示例(config.yml) app: name: "maition" debug: false log_level: "INFO" # 运行时指定配置文件 maition --config config.yml # 或通过环境变量配置 export MAITION_API_KEY="your-key" export MAITION_OUTPUT_DIR="./output"

mAItion is an all-in-one ready-to-use AI-powered tool that combines your existing knowledge with LLMs, allowing you to chat, search and interact with your data through a slick chat interface. With mAItion you can aggregate all your knowledge from many sources using Connectors into a central place and interact with your knowledge with ease!
📚 Documentation: docs.maition.com
.env.rag file by copying .env.rag.example (see https://github.com/wikiteq/rag-of-all-trades for details)OPENROUTER_API_KEYS3_ACCOUNT1_* values to match your source S3 bucket with filesconfig.yaml out of config.yaml.exampleopenai/gpt-oss-20b:free model for rephrasesentence-transformers/all-mpnet-base-v2 model for embeddings.env file by copying .env.openwebui.exampleOPENAI_API_KEYOPENAI_DEFAULT_MODELStart the stack by running docker compose up -d. Wait until all the services become healthy. You can check health status by running docker compose ps and checking the STATUS column of the services:
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
rag-of-all-trades-openwebui-api-1 ghcr.io/wikiteq/rag-of-all-trades:latest "sh -c 'alembic upgr…" api 4 minutes ago Up 4 minutes (healthy) 8000/tcp
rag-of-all-trades-openwebui-openwebui-1 ghcr.io/open-webui/open-webui:0.6.5 "/custom-entrypoint.…" openwebui 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp
rag-of-all-trades-openwebui-postgres-1 ankane/pgvector:v0.5.1 "docker-entrypoint.s…" postgres 4 minutes ago Up 4 minutes (healthy) 5432/tcp
rag-of-all-trades-openwebui-redis-1 redis:7 "docker-entrypoint.s…" redis 4 minutes ago Up 4 minutes (healthy) 6379/tcp
It takes up to a minute for the OpenWebUI to fully boot on cold start.
Once all the services are booted and report healthy status visit http://localhost:3000 and login using Admin credentials. The credentials are defined in X_WEBUI_ADMIN_EMAIL and X_WEBUI_ADMIN_PASS of the .env file. The default ones are:
admin@example123.comq1w2e3r4!If you did not change the ENABLE_OPENAI_API you will also have LLM provider pre-configured with the values you have in the .env including the default chat model
Two components handle RAG service communication:
functions/function.py) — intercepts every user message and injects ROAT context automatically. Enabled globally via Admin Panel → Functions.tools/roat_retrieval.py) — a Workspace Tool that lets the LLM decide when to query ROAT. Requires a model with native function calling support. Both are automatically provisioned on first boot.The service supports multiple data sources, including multiple data sources of the same type, each with its own ingestion schedule. The connectors to enable are defined via config.yaml, and their secrets are defined in the .env.rag file.
sources: - type: "s3" # must be s3 name: "account1" # arbitrary name for the connector, will be stored in metadata config: endpoint: "${S3_ACCOUNT1_ENDPOINT}" # s3 endpoint access_key: "${S3_ACCOUNT1_ACCESS_KEY}" # s3 access key secret_key: "${S3_ACCOUNT1_SECRET_KEY}" # s3 secret key region: "${S3_ACCOUNT1_REGION}" # s3 region use_ssl: "${S3_ACCOUNT1_USE_SSL}" # use ssl for s3 connection, can be True or False buckets: "${S3_ACCOUNT1_BUCKETS}" # single entry or comma-separated list i.e. bucket1,bucket2 schedules: "${S3_ACCOUNT1_SCHEDULES}" # single entry or comma-separated list i.e. 3600,60
- type: "s3" name: "account2" config: ...
- type: "s3" name: "account3" config: ...
dotenv
S3_ACCOUNT1_ENDPOINT=https://s3.amazonaws.com S3_ACCOUNT1_ACCESS_KEY=xxx S3_ACCOUNT1_SECRET_KEY=xxx S3_ACCOUNT1_REGION=us-east-1 S3_ACCOUNT1_USE_SSL=True S3_ACCOUNT1_BUCKETS=bucket1,bucket2 S3_ACCOUNT1_SCHEDULES=3600,60 ```
sources: - type: "mediawiki" name: "wiki1" config: host: "${MEDIAWIKI1_HOST}" path: "/w/" # optional, default /w/ scheme: "https" # optional, default https page_limit: 500 # optional, max pages per namespace (default: unlimited) namespaces: "0,1" # optional, comma-separated namespace IDs (default: content namespaces) filter_redirects: true # optional, exclude redirect pages (default: true) username: "${MEDIAWIKI1_USERNAME}" # optional, for private wikis password: "${MEDIAWIKI1_PASSWORD}" # optional, for private wikis schedules: "${MEDIAWIKI1_SCHEDULES}"
- type: "mediawiki" name: "wiki2" config: host: "${MEDIAWIKI2_HOST}" schedules: "${MEDIAWIKI2_SCHEDULES}"
dotenv
MEDIAWIKI1_HOST=wiki.example.org MEDIAWIKI1_SCHEDULES=3600
sources: - type: "serpapi" name: "serp_ingestion1" config: api_key: "${SERPAPI1_KEY}" queries: "${SERPAPI1_QUERIES}" schedules: "${SERPAPI1_SCHEDULES}"
- type: "serpapi" name: "serp_ingestion2" config:
- type: "serpapi" name: "serp_ingestion3" config:
dotenv
SERPAPI1_KEY=xxxx SERPAPI1_QUERIES=aaa SERPAPI1_SCHEDULES=3600 ```
sources: # URLs mode - type: "web" name: "web1" config: urls: "${WEB1_URLS}" html_to_text: true schedules: "${WEB1_SCHEDULES}"
# Sitemap mode - type: "web" name: "web2" config: sitemap_url: "${WEB2_SITEMAP_URL}" include_prefix: "${WEB2_INCLUDE_PREFIX}" html_to_text: true schedules: "${WEB2_SCHEDULES}"
dotenv
WEB1_URLS=https://example.com/page1,https://example.com/page2 WEB1_SCHEDULES=60 WEB2_SITEMAP_URL=https://example.com/sitemap.xml WEB2_INCLUDE_PREFIX=/blog/ WEB2_SCHEDULES=60 ```
sources: - type: "jira" name: "jira1" config: server_url: "${JIRA1_SERVER_URL}" auth_type: "basic" # "basic" (email + API token) or "token" (PAT) email: "${JIRA1_EMAIL}" # required when auth_type is "basic" api_token: "${JIRA1_API_TOKEN}" jql: "${JIRA1_JQL}" # JQL query to select issues max_results: 50 load_comments: false max_comments: 10 schedules: "${JIRA1_SCHEDULES}"
dotenv
JIRA1_SERVER_URL=https://your-org.atlassian.net JIRA1_EMAIL=your-email@example.com JIRA1_API_TOKEN=your-api-token JIRA1_JQL=project = MYPROJECT ORDER BY updated DESC JIRA1_SCHEDULES=3600 ```
sources: - type: "pipedrive" name: "pipedrive1" config: api_token: "${PIPEDRIVE1_API_TOKEN}" load_types: # optional, default: all entity types - deals - notes - persons - mails max_items: 500 # optional, per-entity limit (default: unlimited) max_retries: 3 # optional, retry attempts on failure (default: 3) filter_mail_folders: # optional, default: [inbox] - inbox - sent schedules: "${PIPEDRIVE1_SCHEDULES}"
- type: "pipedrive" name: "pipedrive2" config: api_token: "${PIPEDRIVE2_API_TOKEN}" schedules: "${PIPEDRIVE2_SCHEDULES}"
dotenv
PIPEDRIVE1_API_TOKEN=your-pipedrive-api-token PIPEDRIVE1_SCHEDULES=3600 PIPEDRIVE2_API_TOKEN=your-second-pipedrive-api-token PIPEDRIVE2_SCHEDULES=3600 ```
embedding: provider: local # you can use any embedding model supported by HuggingFace model_config: sentence-transformers/all-MiniLM-L6-v2 embedding_dim: 384
inference: provider: None model_config: None ```
embedding: provider: openrouter model_config: text-embedding-3-small embedding_dim: 1536
inference: provider: None model_config: None ```
You must set OPENROUTER_API_KEY and OPENROUTER_API_BASE in the .env.rag file.
embedding: provider: openrouter model_config: text-embedding-3-small embedding_dim: 1536
inference: provider: openrouter model_config: gpt-4o ```
You must set OPENROUTER_API_KEY and OPENROUTER_API_BASE in the .env.rag file.
The config.yaml file contains the main configuration of the service.
Environment variables (${...}) in the config file are evaluated at runtime.
```yaml sources: # holds the list of sources to ingest from (Connectors)
- type: # type of the connector (s3, mediawiki, serpapi) name: # arbitrary name for the connector, will be stored in metadata config: # connector specific configuration schedules: "${S3_ACCOUNT1_SCHEDULES}"
embedding: provider: openrouter # openrouter/openai or local for local HuggingFace embeddings model_config: text-embedding-3-small # model to use embedding_dim: 1536 # dimensions (check with the model docs)
inference: provider: openrouter # openrouter/openai model_config: gpt-4o # model to use
vector_store: table_name: embeddings hybrid_search: true # whether to use hybrid search or not chunk_size: 512 # chunk size for vector indexing chunk_overlap: 50 # overlap between chunks # hnsw indexes settings hnsw: hnsw_m: 16 # number of neighbors hnsw_ef_construction: 64 # ef construction parameter for HNSW hnsw_ef_search: 40 # ef search parameter for HNSW hnsw_dist_method: vector_cosine_ops # distance metric for HNSW ```
The SerpAPI connector ingests documents from Google Search results and converts them to Markdown format. The connector has the following configuration options:
```yaml
mAItion 是一个集成式的 AI 工具,能够将您的现有知识与 LLM 整合,提供聊天、搜索和与数据交互的便捷界面。通过 mAItion,您可以将来自多个来源的知识聚合到一个中心位置,并与您的知识进行交互。
mAItion 支持以下功能: * 支持本地和远程 LLM 的嵌入和推理 * 异步数据 ingestion,支持去重和按来源可配置的调度 * 从 S3 存储桶中 ingestion 数据,支持 Everything-to-Markdown 转换 * 从 MediaWiki 中 ingestion 数据,支持 Wiki-to-Markdown 转换
环境依赖与系统要求: * Docker 和 Docker Compose * OpenRouter 或 OpenAI API 密钥(一个免费的 OpenRouter 账户可以与默认配置一起工作 * S3 存储桶
安装步骤: * 创建 `.env.rag` 文件,复制 `.env.rag.example`(详见 https://github.com/wikiteq/rag-of-all-trades) * 设置 `OPENROUTER_API_KEY` * 设置 `S3_ACCOUNT1_*` 值以匹配您的源 S3 存储桶 * 创建 `config.yaml`,复制 `config.yaml.example` * 默认配置可以正常工作,并且配置了: * 使用一个 S3 存储桶作为数据源 * 使用 `openai/gpt-oss-20b:free` 模型
使用教程: * 一个集成式的聊天工具,能够与您的公司知识进行交互 * 一个中心位置,用于查找和完善您的现有知识 * 一个工具,用于找到无法在其他地方找到的小知识 * 一个入口点,用于您的本地主机 LLM 模型,支持评估和按模型设置
配置说明: * 服务支持多个数据源,包括多个相同类型的数据源,每个数据源都有自己的 ingestion 调度 * 可以通过 `config.yaml` 文件定义需要启用的连接器 * 可以通过 `.env.rag` 文件定义连接器的密钥
API/接口说明: * SerpAPI 连接器能够从 Google 搜索结果中 ingestion 文档,并将它们转换为 Markdown 格式 * 连接器有以下配置选项: * `sources`:定义数据源 * `type`:定义数据源类型 * `name`:定义数据源名称 * `config`:定义数据源配置
FAQ 摘要: * 请参见 [FAQ] 节
mAItion是一个有潜力的开源AI工具,提供了多种功能和API,帮助用户快速构建AI应用,但需要进一步优化和完善。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:mAItion 的核心功能完整,质量良好。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | mAItion |
| 原始描述 | 开源AI工具:mAItion is an all-in-one ready-to-use AI-powered tool that combines your existin。⭐15 · Python |
| Topics | installableaichatbotconnectorsknowledge-baseknowledge-graphpython |
| GitHub | https://github.com/WikiTeq/mAItion |
| License | MIT |
| 语言 | Python |
收录时间:2026-05-19 · 更新时间:2026-05-20 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。