亚斯拉格
又一款简单而智能的RAG -一个MCP服务器,通过 谷歌云端硬盘同步 RAG工作流的功能。
特性
- 店铺管理:创建、列出、获取和删除文件搜索存储
- 文献检索:上传本地文件或文本内容
- 🆕 谷歌云端硬盘同步:自动将驱动器文件夹同步到存储
- 语义搜索:使用自然语言+引用查询文档
- 多种格式:Markdown或JSON响应
可用工具
| 工具 | 说明 |
|---|---|
create_store | 创建新的文件搜索存储 |
list_stores | 列出所有商店 |
get_store | 获取店铺详细信息 |
delete_store | 删除商店 |
upload_file | 上传本地文件 |
upload_text | 上传文本内容 |
search | 使用人工智能生成的答案进行搜索 |
list_files | 列出存储中的文件 |
delete_file | 删除文件 |
sync_drive_folder | 将Google Drive文件夹(URL或ID)同步到存储 |
list_drive_files | 预览驱动器文件夹内容(URL或ID) |
configure_rag | 配置所有RAG设置(API密钥、型号、轮询等) |
get_rag_config | 查看当前RAG配置 |
reset_rag_config | 将配置重置为默认值 |
quick_setup | 一个命令RAG设置 |
安装
使用紫外线(推荐)
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/yourusername/yass-rag
cd yass-rag
# Install core dependencies
uv sync
# Or install with Google Drive support
uv sync --extra drive
# Or install everything (including dev tools)
uv sync --all-extras配置
必需:Gemini API密钥
export GEMINI_API_KEY='your-gemini-api-key'获取您的钥匙:https://aistudio.google.com/apikey
可选:谷歌云端硬盘凭据
重要提示: 谷歌驱动API 非 支持API密钥(与Gemini不同)。它需要OAuth 2.0或服务帐户,因为它访问私人用户数据。
选项1:服务帐户(建议用于服务器)
export GOOGLE_APPLICATION_CREDENTIALS='/path/to/service-account.json'- 最适合:自动化、服务器、共享文件夹
- 设置:与服务帐户电子邮件共享您的驱动器文件夹
选项2:OAuth(供个人使用)
export GOOGLE_OAUTH_CREDENTIALS='/path/to/oauth-credentials.json'- 最适合:访问您的个人驱动器
- 设置:需要一次性浏览器同意流程
设置Google Drive API
- 首选 谷歌云控制台
- 创建项目(或选择现有项目)
- 启用“Google Drive API”
- 创建凭据:
- 服务帐户:下载JSON密钥,与服务帐户电子邮件共享文件夹 - OAuth:下载客户端机密JSON,运行一次以进行身份验证
用法
运行服务器
# Using uv
uv run yass-rag
# Or with python module
uv run python -m yass_rag.main
# Or if installed globally
yass-ragClaude桌面配置
添加 claude_desktop_config.json:
{
"mcpServers": {
"yass-rag": {
"command": "uv",
"args": ["run", "--directory", "/path/to/yass-rag", "yass-rag"],
"env": {
"GEMINI_API_KEY": "your-key",
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/credentials.json"
}
}
}
}或者,如果全局安装:
{
"mcpServers": {
"yass-rag": {
"command": "yass-rag",
"env": {
"GEMINI_API_KEY": "your-key"
}
}
}
}示例:同步驱动器文件夹
# 1. Create a store
create_store(display_name="Company Docs")
# Returns: fileSearchStores/abc123
# 2. Sync a Drive folder (using full URL)
sync_drive_folder(
store_name="fileSearchStores/abc123",
folder="https://drive.google.com/drive/folders/1ABC_your_folder_id_XYZ",
recursive=True,
max_files=100
)
# Or just use the folder ID directly
sync_drive_folder(
store_name="fileSearchStores/abc123",
folder="1ABC_your_folder_id_XYZ"
)
# 3. Search your documents
search(
store_names=["fileSearchStores/abc123"],
query="What is our refund policy?"
)支持的URL格式
这 folder 参数接受:
- 完整URL:
https://drive.google.com/drive/folders/1ABC_xyz - 带有用户路径的URL:
https://drive.google.com/drive/u/0/folders/1ABC_xyz - 带有共享参数的URL:
https://drive.google.com/drive/folders/1ABC_xyz?usp=sharing - 只有文件夹ID:
1ABC_xyz
支持的文件类型
文件:PDF、DOCX、DOC、TXT、MD、HTML 数据:JSON、CSV、XLSX、XLS、PPTX 代码:PY、JS、TS、Java、C++、Go、Rust等。 谷歌文档:自动导出为PDF/CSV
最大文件大小:每个文件100MB
RAG配置
使用配置所有RAG设置 configure_rag 工具:
# Quick one-command setup
quick_setup(
gemini_api_key="your-key",
drive_folder="https://drive.google.com/drive/folders/1ABC_xyz",
project_name="My Knowledge Base",
model="gemini-2.5-flash"
)
# Or configure individual settings
configure_rag(
# API Configuration
gemini_api_key="your-key",
google_credentials_path="/path/to/credentials.json",
# Model Settings
model="gemini-2.5-pro",
temperature=0.7,
max_output_tokens=4096,
# Polling & Async
poll_interval_seconds=5,
max_poll_attempts=60,
async_uploads=False,
# Google Drive Defaults
default_drive_folder="https://drive.google.com/drive/folders/...",
drive_recursive=True,
drive_max_files=100,
# Project/Store Defaults
project_store="fileSearchStores/abc123",
default_stores=["fileSearchStores/abc123"],
# Response Settings
include_citations=True,
citation_style="inline",
system_prompt="You are a helpful assistant..."
)
# View current config
get_rag_config()
# Reset to defaults (preserves API keys)
reset_rag_config(confirm=True, preserve_api_keys=True)配置选项
| 类别 | 设置 |
|---|---|
| API | gemini_api_key, google_credentials_path |
| 模型 | model, temperature, max_output_tokens, top_p, top_k |
| 轮询 | poll_interval_seconds, max_poll_attempts, async_uploads, batch_size |
| 驾驶 | default_drive_folder, drive_recursive, drive_max_files, auto_sync_enabled |
| 商店 | project_store, default_stores, auto_create_store |
| 检索 | max_chunks, min_relevance_score, include_metadata |
| 响应 | include_citations, citation_style, response_format, system_prompt |
定价
| 功能 | 成本 |
|---|---|
| 存储空间 | 免费 |
| 查询嵌入 | 免费 |
| 索引 | 0.15美元/1M代币 |
| 世代 | 标准Gemini定价 |
发展
# Install with dev dependencies
uv sync --all-extras
# Run linter
uv run ruff check .
# Run type checker
uv run mypy yass_rag.py
# Run tests
uv run pytest
# Format code
uv run ruff format .
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run yass-rag项目结构
yass-rag/
├── src/yass_rag/ # Main package
│ ├── tools/ # MCP tool definitions
│ ├── services/ # External API services (Gemini, Drive)
│ ├── models/ # Pydantic data models
│ ├── config.py # Configuration management
│ └── server.py # FastMCP server instance
└── tests/ # Unit and integration tests