feat: backup architecture docs, source code, and scripts

This commit is contained in:
Warren
2026-04-25 17:15:45 +08:00
parent 59809dae1f
commit 1f84e5469f
368 changed files with 146329 additions and 261 deletions

View File

@@ -0,0 +1,187 @@
# 同義詞配置指南
## 概述
Momentry Core 支持中文查詢的同義詞擴展功能,可將用戶查詢中的詞語自動擴展為其同義詞,提升搜索召回率。
**重要:系統不提供預設同義詞資料集**。為了避免版權問題,您需要提供自己的同義詞 JSON 檔案。系統提供擴展機制和示例檔案,但不會自動加載任何同義詞資料。
主要特性:
- **繁簡體中文轉換**:自動將簡體中文查詢轉換為繁體中文(假設資料庫儲存繁體中文)
- **同義詞擴展**:將查詢詞語擴展為多個同義詞,使用 OR 邏輯連接
- **智能分詞**:對中文文本進行分詞處理,支援混合查詢
- **多檔案支持**:可從多個 JSON 檔案加載同義詞映射
## 配置方法
### 1. 創建同義詞 JSON 檔案
同義詞檔案為標準 JSON 格式,鍵值對結構:
```json
{
"原始詞語": ["同義詞1", "同義詞2", "同義詞3"],
"電腦": ["計算機", "微机", "筆記本"],
"工作": ["任務", "作業", "職責"],
"檔案": ["文件", "文檔", "資料"]
}
```
**注意事項**
- 詞語需為**繁體中文**(系統會自動轉換簡體查詢)
- 同義詞列表可包含多個詞語
- 支援單一詞語或多字詞語
### 2. 環境變量配置
有兩種方式配置同義詞檔案:
#### 方式一:單一檔案(推薦)
```bash
export MOMENTRY_SYNONYM_FILE=/path/to/your/synonyms.json
```
#### 方式二:多個檔案(後面的檔案會覆蓋前面的)
```bash
export MOMENTRY_SYNONYM_FILES=/path/to/base.json,/path/to/domain.json
```
### 3. 開發環境設置
`.env.development``.env` 檔案中添加:
```bash
# 同義詞配置文件(可選)
# 取消註釋並設置為您的同義詞JSON檔案路徑以啟用同義詞擴展
MOMENTRY_SYNONYM_FILE=/Users/accusys/momentry_core_0.1/data/synonyms.json
# 多個同義詞檔案(逗號分隔),會覆蓋 MOMENTRY_SYNONYM_FILE
# MOMENTRY_SYNONYM_FILES=/path/to/first.json,/path/to/second.json
```
## 使用示例
### 示例同義詞檔案 (`docs/examples/custom_synonyms.json`)
```json
{
"電腦": ["計算機", "微机"],
"視頻": ["影片", "錄像"],
"分析": ["解析", "剖析"],
"系統": ["體系", "架構"],
"用戶": ["使用者", "客戶"],
"數據": ["資料", "資訊"],
"網絡": ["網路", "互聯網"],
"檔案": ["文件", "文檔"],
"團體": ["組織", "團隊"],
"工作": ["任務", "作業"]
}
```
### 查詢擴展示例
| 原始查詢 | 擴展後查詢 | 說明 |
|---------|-----------|------|
| `電腦` | `(電腦 | 計算機 | 微机 | 筆記本)` | 單一詞語擴展 |
| `電腦 工作` | `(電腦 | 計算機 | 微机) & (工作 | 任務 | 作業)` | 多詞語擴展 |
| `視頻分析` | `(視頻 | 影片 | 錄像) & (分析 | 解析 | 剖析)` | 連續詞語擴展 |
| `檔案系統` | `(檔案 | 文件 | 文檔) & (系統 | 體系 | 架構)` | 複合詞擴展 |
### API 使用
**BM25 搜索端點**
```bash
curl -X POST http://localhost:3003/api/v1/search/bm25 \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "電腦工作", "limit": 10}'
```
**n8n 搜索端點**
```bash
curl -X POST http://localhost:3003/api/v1/n8n/search/bm25 \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "視頻檔案", "limit": 5}'
```
## 技術細節
### 擴展邏輯
1. **繁簡轉換**:使用 OpenCC 將簡體中文轉換為繁體
2. **同義詞查找**:在加載的映射中查找匹配詞語
3. **查詢重構**:將原始詞語替換為 `(原始詞語 OR 同義詞1 OR 同義詞2 ...)`
4. **分詞處理**:對未匹配部分進行中文分詞
5. **TSQUERY 生成**:生成 PostgreSQL 全文搜索查詢語法
### 分詞處理
- 使用 Jieba 分詞器進行中文分詞
- 分詞結果用空格分隔,例如:"電腦工作" → "電 腦 工作"
- 分詞後每個部分都會加上前綴搜索符號 (`:*`)
### 性能考慮
- 同義詞映射在應用啟動時加載並緩存
- 擴展操作在內存中進行,性能影響最小
- 支援大量同義詞映射(數千條)
## 除錯與測試
### 檢查同義詞加載
查看應用日誌中是否有以下訊息:
```
Loaded synonym expander from /path/to/synonyms.json
```
### 測試擴展功能
使用內建測試工具:
```bash
cargo run --bin test_synonym_expansion
```
### 手動測試
創建測試程式檢查擴展結果:
```rust
use momentry_core::core::text::global_synonym_expander;
let expander = global_synonym_expander();
println!("擴展 '電腦': {}", expander.expand_word("電腦"));
println!("擴展 '電腦 工作': {}", expander.expand_query("電腦 工作"));
```
## 注意事項
1. **詞語格式**:確保同義詞檔案中的詞語為繁體中文
2. **檔案編碼**:使用 UTF-8 編碼保存 JSON 檔案
3. **重啟需求**:修改同義詞檔案後需要重啟應用才能生效
4. **版本兼容**:同義詞功能需 Momentry Core 0.1.0 以上版本
5. **版權注意**:請使用自創或已獲授權的同義詞資料,避免使用受版權保護的詞庫
## 進階配置
### 領域特定同義詞
為不同領域創建專用同義詞檔案:
- `technical_terms.json` - 技術術語
- `business_terms.json` - 商業術語
- `industry_terms.json` - 行業術語
通過 `MOMENTRY_SYNONYM_FILES` 加載多個檔案。
### 動態更新(計劃中)
未來版本將支援:
- 熱重載同義詞檔案
- API 端點管理同義詞
- 用戶自定義同義詞
---
## 附錄
### 示例同義詞檔案
- 基礎示例:`docs/examples/custom_synonyms.json`
- 舊示例(僅供參考):`data/synonyms.json`
- 領域示例(僅供參考):`data/domain_synonyms.json`
**注意**:這些檔案僅作為格式示例,系統不會自動加載。您需要設置 `MOMENTRY_SYNONYM_FILE` 環境變量指向您自己的同義詞檔案。
### 相關程式檔案
- 同義詞擴展器:`src/core/text/synonym_expander.rs`
- 繁簡轉換:`src/core/text/synonym.rs`
- 分詞器:`src/core/text/tokenizer.rs`
- PostgreSQL 整合:`src/core/db/postgres_db.rs`