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

图像搜索

文字搜索
系统体系结构

系统体系结构
特征
技术细节
图像搜索管道
预处理:
- 图像调整大小和归一化
- 培训的数据增强
- 支持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许可证获得许可的 - 有关详细信息,请参见许可证文件。