Spaces:
Runtime error
Runtime error
Commit ·
4218058
1
Parent(s): fb6c7c6
Add Weaviate index rebuild instructions
Browse filesCo-authored-by: Cursor <cursoragent@cursor.com>
REBUILD_WEAVIATE_INDEX.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 重建 Weaviate 索引(使用 OpenAI Embedding)
|
| 2 |
+
|
| 3 |
+
由于 ClareVoice 已切换到使用 **OpenAI `text-embedding-3-small`** 进行 embedding,如果 Weaviate 向量数据库中的索引是用旧的 HuggingFace embedding 构建的,需要重新构建索引以确保检索一致性。
|
| 4 |
+
|
| 5 |
+
## 前置条件
|
| 6 |
+
|
| 7 |
+
1. **本地环境**:Python 3.8+,已安装所需依赖
|
| 8 |
+
2. **Weaviate 配置**:需要 Weaviate Cloud 的 URL 和 API Key
|
| 9 |
+
3. **OpenAI API Key**:已提供(见 `OPENAI_EMBEDDING_SETUP.md`)
|
| 10 |
+
4. **课程文档**:确保项目根目录有 `GENAI COURSES` 文件夹
|
| 11 |
+
|
| 12 |
+
## 步骤
|
| 13 |
+
|
| 14 |
+
### 1. 安装依赖
|
| 15 |
+
|
| 16 |
+
```bash
|
| 17 |
+
cd hf_space/GenAICoursesDB_space
|
| 18 |
+
pip install -r requirements.txt
|
| 19 |
+
```
|
| 20 |
+
|
| 21 |
+
### 2. 设置环境变量
|
| 22 |
+
|
| 23 |
+
在项目根目录创建或更新 `.env` 文件:
|
| 24 |
+
|
| 25 |
+
```bash
|
| 26 |
+
# OpenAI API Key(用于 embedding)
|
| 27 |
+
OPENAI_API_KEY=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
|
| 28 |
+
|
| 29 |
+
# Weaviate 配置(从 Weaviate Cloud Console 获取)
|
| 30 |
+
WEAVIATE_URL=https://your-cluster.c0.us-west3.gcp.weaviate.cloud
|
| 31 |
+
WEAVIATE_API_KEY=your-weaviate-api-key
|
| 32 |
+
|
| 33 |
+
# 使用 OpenAI embedding(默认)
|
| 34 |
+
EMBEDDING_PROVIDER=openai
|
| 35 |
+
|
| 36 |
+
# 可选:清空旧索引后重建(默认:1,即清空)
|
| 37 |
+
WEAVIATE_CLEAR_FIRST=1
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
### 3. 运行索引构建脚本
|
| 41 |
+
|
| 42 |
+
```bash
|
| 43 |
+
cd hf_space/GenAICoursesDB_space
|
| 44 |
+
python build_weaviate_index.py
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
脚本会:
|
| 48 |
+
1. 读取 `GENAI COURSES` 目录下的所有文档(.md, .pdf, .txt, .py, .ipynb, .docx)
|
| 49 |
+
2. 使用 OpenAI `text-embedding-3-small` 生成 embedding
|
| 50 |
+
3. 上传到 Weaviate Cloud(collection: `GenAICourses`)
|
| 51 |
+
4. 显示最终的对象数量以验证
|
| 52 |
+
|
| 53 |
+
### 4. 验证
|
| 54 |
+
|
| 55 |
+
脚本完成后会显示:
|
| 56 |
+
```
|
| 57 |
+
✅ 索引已上传,当前 object count = [数量]
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
如果数量为 0,请检查:
|
| 61 |
+
- `WEAVIATE_URL` 是否与 Weaviate Console 中的 REST 地址一致
|
| 62 |
+
- 是否使用同一 Weaviate 账号
|
| 63 |
+
- 网络连接是否正常
|
| 64 |
+
|
| 65 |
+
### 5. 在 Hugging Face Space 中配置
|
| 66 |
+
|
| 67 |
+
确保 ClareVoice Space 的 **Settings → Secrets** 中已配置:
|
| 68 |
+
|
| 69 |
+
- `OPENAI_API_KEY`:用于检索时的 embedding
|
| 70 |
+
- `WEAVIATE_URL`:Weaviate Cloud REST 地址
|
| 71 |
+
- `WEAVIATE_API_KEY`:Weaviate API Key
|
| 72 |
+
- `WEAVIATE_COLLECTION`:`GenAICourses`(默认)
|
| 73 |
+
|
| 74 |
+
## 注意事项
|
| 75 |
+
|
| 76 |
+
⚠️ **重要**:
|
| 77 |
+
- 重建索引会**清空**旧的 `GenAICourses` collection(如果 `WEAVIATE_CLEAR_FIRST=1`)
|
| 78 |
+
- 确保在重建前备份重要数据(如果需要)
|
| 79 |
+
- 重建过程可能需要几分钟到几十分钟,取决于文档数量
|
| 80 |
+
- 索引构建完成后,ClareVoice 的检索将使用新的 OpenAI embedding,与索引构建时一致
|
| 81 |
+
|
| 82 |
+
## 故障排除
|
| 83 |
+
|
| 84 |
+
### 错误:`OPENAI_API_KEY is required`
|
| 85 |
+
- 检查 `.env` 文件中的 `OPENAI_API_KEY` 是否正确设置
|
| 86 |
+
- 确保环境变量已加载(脚本会自动加载 `.env`)
|
| 87 |
+
|
| 88 |
+
### 错误:`Weaviate 连接失败`
|
| 89 |
+
- 检查 `WEAVIATE_URL` 格式是否正确(应以 `https://` 开头)
|
| 90 |
+
- 验证 `WEAVIATE_API_KEY` 是否有效
|
| 91 |
+
- 确认网络连接正常
|
| 92 |
+
|
| 93 |
+
### 错误:`课程目录不存在`
|
| 94 |
+
- 确保项目根目录有 `GENAI COURSES` 文件夹
|
| 95 |
+
- 检查路径是否正确(脚本从 `hf_space/GenAICoursesDB_space` 运行,会查找 `../../GENAI COURSES`)
|
| 96 |
+
|
| 97 |
+
### 索引构建成功但 object count = 0
|
| 98 |
+
- 检查 Weaviate Console 中的 collection 名称是否匹配(应为 `GenAICourses`)
|
| 99 |
+
- 确认使用的是同一 Weaviate 集群和账号
|
| 100 |
+
- 等待几秒钟后再次检查(可能有延迟)
|
| 101 |
+
|
| 102 |
+
## 相关文档
|
| 103 |
+
|
| 104 |
+
- `OPENAI_EMBEDDING_SETUP.md`:OpenAI embedding 配置说明
|
| 105 |
+
- `build_weaviate_index.py`:索引构建脚本源码
|
web/src/assets/dfe44dab3ad8cd93953eac4a3e68bd1a5f999653.png
CHANGED
|
|