搜索引擎系統
使用向量相似性支持圖像和文本搜索功能的可擴展搜索引擎系統。

圖像搜索

文字搜索
系統體系結構

系統體系結構
特徵
技術細節
圖像搜索管道
預處理:
- 圖像調整大小和歸一化
- 培訓的數據增強
- 支持JPEG,PNG和WebP格式
功能提取:
- Deep CNN體系結構(Resnet/Extricnet)
- 跨平台兼容性的ONNX格式
- GPU推理的張力優化
- 輸出:512/1024維嵌入向量
向量存儲和搜索:
- QDRANT矢量數據庫用於有效的相似性搜索
- HNSW索引快速近似最近的鄰居搜索
- 可配置的距離指標(餘弦/歐幾里得)
文本搜索管道
文本處理和分析:
- 自定義Elasticsearch分析儀:
- 關鍵字分析儀帶有小寫和ASCII折疊
- AutoComplete的邊緣NGram分析儀(Min_gram:2,Max_gram:5)
- 全文搜索的標準分析儀
- 角色過濾和令牌化
- 支持越南文本
搜索方法:
自動完整(搜索 - 您類型) :
- 前綴匹配的邊緣ngram tokenizer
- 定製完成建議
- 為即時建議進行優化
- 至少2個字符以提出建議
全文搜索:
- 跨字段的多匹配查詢:
- 模糊與自動模糊匹配
- 基於業務指標的自定義評分:
- 銷售率(折扣百分比)
- 銷售量(> 1000個銷售獎金)
- 項目價格歸一化
搜索優化:
- 使用Elasticsearch腳本自定義評分模板
- 有效數據攝入的批次索引
- 異步搜索操作
- 可配置的結果大小
- 錯誤處理和記錄
Elasticsearch功能:
- 定制索引映射
- 多種現場類型和分析儀
- 功能得分查詢
- 基於腳本的評分
- 批量索引操作
技術堆棧
模型服務
- Nvidia Triton推理服務器:
- Triton服務器文檔
- 模型版本和A/B測試
- 動態批處理
- 並發模型執行
- 用張力優化的GPU優化
- 模型格式轉換管道:
基礎設施
容器化:
- Docker多階段構建
- 優化的容器圖像
- Docker撰寫開發
編排:
- Kubernetes部署
- 包裝管理的掌舵圖表
- 水平豆莢自動化
- 資源管理和擴展
監視和記錄:
- 普羅米修斯指標
- Grafana儀表板
- 分佈式跟踪
- 性能監控
入門
- 克隆存儲庫:
git clone https://github.com/vectornguyen76/search-engine-system.git
- 使用Docker撰寫服務:
- 訪問服務:
- 圖像搜索UI:http:// localhost:8501
- 文本搜索UI:http:// localhost:8502
- Triton服務器:http:// localhost:8000
發展
CI/CD管道
代碼質量
- Flake8用於Python Code linting
- 輸入提示和文檔
- CI/CD管道中的自動測試
- 代碼審核過程
貢獻
- 分叉存儲庫
- 創建您的功能分支
- 提交您的更改
- 推到分支機構
- 創建一個新的拉請請求
執照
該項目是根據MIT許可證獲得許可的 - 有關詳細信息,請參見許可證文件。