想要让 OpenClaw 读取本地 PDF、Word 或 Markdown 文档以辅助编程或数据分析,但发现上传入口隐藏较深、界面无明确提示,直接拖拽文件也常失败?这通常是因为 OpenClaw 默认未开启文档上传功能,需要手动启用 RAG(检索增强生成)插件并挂载向量数据库路径。以下内容将详细说明如何解锁该功能。
确认 OpenClaw 是否支持文档上传
OpenClaw 本身不具备文档解析能力,它依赖后端 LLM 服务(如 Ollama、vLLM 或云 API)来提供 RAG 支持。如果您使用的是最新 Docker 镜像(docker.all-hands.dev/all-hands-ai/openhands:0.28),默认情况下文档上传功能处于关闭状态;必须手动启用 RAG 插件并挂载向量数据库目录。
在运行容器前,请检查环境变量:RAG_ENABLED=true 和 RAG_VECTOR_STORE_PATH=/opt/rag-data 是否已正确设置。两者缺一不可,否则界面将不会出现“上传”按钮。
小提示: 若您使用云端服务或非 Docker 部署方式,请确认后端服务是否支持 RAG 插件,并参考对应文档进行配置。
启用 RAG 并挂载文档存储路径
以下是启用 RAG 的完整步骤,请确保每一步都准确执行:
- 第一步:停止当前运行的 OpenClaw 容器(若有)
执行命令:docker stop openhands-app - 第二步:创建 RAG 数据目录
在宿主机上新建目录,用于存储向量数据库文件:mkdir -p $HOME/openclaw-rag-data - 第三步:使用带 RAG 参数的指令重新启动容器
挂载路径与环境变量是关键,请使用以下命令:
docker run -it --rm --pull=always
-e RAG_ENABLED=true
-e RAG_VECTOR_STORE_PATH=/opt/rag-data
-v $HOME/openclaw-rag-data:/opt/rag-data
-v /var/run/docker.sock:/var/run/docker.sock
-p 3000:3000
--add-host host.docker.internal:host-gateway
--name openhands-app
docker.all-hands.dev/all-hands-ai/openhands:0.28
⚠️ 注意: 必须确保 /opt/rag-data 同时出现在 -e 和 -v 参数中,且宿主机对应路径真实存在并具备写入权限,否则 RAG 服务将无法正常启动,UI 上也不会显示上传入口。
在 Web 界面上传文档
成功启动容器后,您可以通过以下两种方式上传文档:
方法一:通过侧边栏快捷入口
- 打开浏览器,访问
http://localhost:3000。 - 登录后,点击左上角「+ New Chat」创建新对话。
- 在新对话窗口右上角,您会看到一个文档图标(形状类似纸张)。
- 点击该图标,弹出文件选择对话框。
- 选择 PDF、DOCX 或 Markdown 文件,点击「Upload」即可。
方法二:拖拽到聊天输入区下方空白处
- 进入任意一个对话窗口。
- 将文档直接拖入输入框正下方的浅灰色区域(注意:不是输入框内部,也不是顶部导航栏)。
- 松手后,系统会自动触发解析进度条。
- 解析完成后,底部会显示提示:
✅ Indexed: 文件名.pdf。
小提示: 上传后文档不会立即生效,需等待右下角出现小字提示「Embedding complete」,此时 AI 才能引用其中内容。若上传后 10 秒内无此提示,说明 RAG 服务可能未正确运行,或文件格式不被支持。
常见问题与解答
- 问:上传后界面毫无反应,该如何处理?
答:请检查容器启动命令是否正确,尤其是RAG_ENABLED=true和RAG_VECTOR_STORE_PATH=/opt/rag-data是否同时设置,并确认/opt/rag-data在宿主机上已存在且有写入权限。 - 问:支持哪些文件格式?
答:支持 PDF、DOCX、Markdown 等文本型文件。不支持加密 PDF、扫描图转文字的 PDF、.xls 等非文本型文件。 - 问:上传后 AI 无法引用文档内容,如何排查?
答:请确认上传后是否出现「Embedding complete」提示。若未出现,请检查 RAG 服务是否正常运行,或文件是否被正确解析。
总结:通过正确设置环境变量、挂载向量数据库路径,并按照上述步骤操作,您就能轻松让 OpenClaw 读取本地文档,辅助编程或分析工作。关键步骤是确保容器启动命令中 RAG_ENABLED=true 和 -v 挂载路径同时存在,否则上传功能将无法启用。
