部署AI大模型(ollama、deepseek、向量数据库、LangChainGo)

26   /   0   /   0   /   0   /   发布于 53天前
# 一、使用ollama部署deepseek [安装参照官方文档](https://docs.ollama.com/linux) **注意:**安装脚本中对系统的要求比较高,建议使用手动安装。 # 二、向量数据库 ### 1.向量数据库对比(Go 开发者视角) | 数据库 | 实现语言 | Go SDK 质量 | 学习曲线 | 生产就绪 | 特点 | | ------------------ | -------- | ----------- | -------- | ---------------- | ---------------------- | | **Vearch** | Go | ⭐⭐⭐⭐⭐ | 简单 | 腾讯内部使用多年 | 纯 Go,适合国内开发者 | | **Milvus** | C++ | ⭐⭐⭐⭐ | 中等 | 非常成熟 | 生态丰富,社区活跃 | | **Weaviate** | Go | ⭐⭐⭐⭐ | 中等 | 生产就绪 | 语义搜索+知识图谱 | | **Vald** | Go | ⭐⭐⭐ | 较陡 | 生产就绪 | 云原生,K8s 原生支持 | | **Qdrant** | Rust | ⭐⭐⭐ | 简单 | 生产就绪 | Rust高性能,Go SDK完善 | **注意:**建议从 Qdrant 开始,因为它平衡了易用性和性能。 ### 2.安装和使用Qdrant [gitee中Qdrant的地址](https://gitee.com/mirrors/qdrant) [github中Qdrant的地址](https://github.com/qdrant/qdrant) 去github下载文件qdrant-amd64-unknown-linux-musl.tar.gz注意下载带musl的版本 配置文件保存在工作目录的config下的config.yaml,参考配置如下: ``` # ==================== 服务配置 ==================== service: # 网络监听配置 host: "0.0.0.0" # 监听所有网络接口 http_port: 6333 grpc_port: 6334 # 安全配置 - 生产环境必须设置API密钥 #api_key: "${QDRANT_API_KEY}" # 从环境变量读取,避免硬编码 #read_only_api_key: "${QDRANT_READ_ONLY_API_KEY}" # 只读密钥,用于监控 # 性能调优 max_request_size_mb: 32 # 允许更大的批量上传 max_workers: 4 # 工作线程数,根据CPU核心数调整 # ==================== TLS/SSL配置 ==================== tls: enabled: true cert: "/path/to/qdrant/config/cert.pem" key: "/path/to/qdrant/config/key.pem" # 注意:启用TLS后,客户端需要使用https/wss连接 # ==================== 存储配置 ==================== storage: # 存储路径 - 使用高性能SSD storage_path: "/path/to/qdrant/data/storage" # 主数据目录 snapshots_path: "/path/to/qdrant/data/snapshots" # 快照目录 # 性能优化 performance: max_search_threads: 0 # 0表示自动使用所有CPU核心 max_optimization_threads: 4 # 后台优化线程数 # 预写日志配置 - 保证数据持久性 wal_config: wal_capacity_mb: 1024 # 1GB WAL容量 wal_segments_ahead: 3 # ==================== 集合默认配置 ==================== # 这里设置创建新集合时的默认参数 defaults: # 向量存储策略 - 性能优先,全部在内存中 vectors: on_disk: false # false=内存存储,速度最快,但内存消耗大 # 负载存储策略 on_disk_payload: false # false=内存存储,查询时过滤更快 # HNSW索引配置 - 高性能参数 hnsw_config: m: 24 # 每个节点的最大连接数,提高精度 ef_construct: 200 # 构建时的动态列表大小 ef: 128 # 搜索时的动态列表大小 full_scan_threshold: 10000 # 向量数少于此值时使用全量扫描 # 优化器配置 optimizer_config: deleted_threshold: 0.2 # 删除20%时触发段合并 vacuum_min_vector_number: 1000 # 最小向量数阈值 max_segment_size_kb: 1048576 # 1GB最大段大小 memmap_threshold_kb: 204800 # 200MB以上使用内存映射 indexing_threshold: 50000 # 5万向量时创建索引 flush_interval_sec: 5 # 5秒刷盘一次 # 量化配置(如果使用标量量化) quantization_config: scalar: type: "int8" quantile: 0.99 always_ram: true # 量化后的向量常驻内存 # ==================== 日志配置 ==================== log_level: INFO # 生产环境用INFO,调试时用DEBUG # 日志目标配置 - 使用正确的配置结构 log: # 控制台输出(错误级别及以上) - level: ERROR sink: stderr # 控制台输出(信息级别) - level: INFO sink: stdout # 文件输出 - 主日志 - level: INFO sink: type: file path: "/path/to/qdrant/log/qdrant.log" rotation: # 日志轮转配置 strategy: size max_size_mb: 100 max_files: 10 # 文件输出 - 错误日志 - level: ERROR sink: type: file path: "/path/to/qdrant/log/qdrant.error.log" rotation: strategy: size max_size_mb: 50 max_files: 5 # 文件输出 - 访问日志 - level: INFO sink: type: file path: "/path/to/qdrant/log/qdrant.access.log" rotation: strategy: daily # ==================== 性能监控配置 ==================== telemetry_disabled: false # 开启遥测,帮助优化性能 # Prometheus指标端点 prometheus: enabled: true port: 6335 path: "/metrics" # ==================== 缓存配置 ==================== cache: # 查询结果缓存 query_cache_size: 1000 # 缓存最近1000个查询 query_cache_ttl_sec: 300 # 缓存5分钟 # payload缓存 payload_cache_size: 10000 # 缓存1万个payload # ==================== 分片配置 ==================== # 单个集合的分片数,影响并行处理能力 shard_number: 2 # 通常设置为CPU核心数的一半到相等 # 副本配置 replication_factor: 1 # 单机部署为1,集群环境可增加 # ==================== 资源限制 ==================== resource_limits: max_search_requests: 1000 # 最大并发搜索请求 max_upsert_requests: 100 # 最大并发插入请求 max_memory_percentage: 80 # 最大内存使用百分比 # 请求限流 rate_limit: search_requests_per_second: 1000 upsert_requests_per_second: 100 max_batch_size: 256 # 最大批量操作大小 ``` systemd的qdrant.service的文件参考: ``` [Unit] Description=Qdrant Vector Search Engine After=network.target Requires=network.target [Service] Type=simple User=qdrant Group=qdrant WorkingDirectory=/path/to/qdrant/ Environment=QDRANT_API_KEY=your_strong_production_api_key_here Environment=RUST_LOG=info ExecStart=/path/go/qdrant/qdrant --config-path /path/go/qdrant/config/config.yaml Restart=always RestartSec=5 LimitNOFILE=65535 LimitMEMLOCK=infinity # 安全限制 PrivateTmp=true ProtectSystem=full NoNewPrivileges=true [Install] WantedBy=multi-user.target ``` 如果需要,可以下载[qdrant-web-ui](https://github.com/qdrant/qdrant-web-ui),解压后放在工作目录并重命名为static,然后就可以通过http://ip:6333/dashboard访问了。
  • 共 0 条回复
  • 需要登录 后方可回复, 如果你还没有账号请点击这里注册
梦初醒 茅塞开
  • 不经他人苦,莫劝他人善。
  • 能量足,心态稳,温和坚定可以忍。
  • 辛苦决定不了收入,真正决定收入的只有一个,就是不可替代性。
  • 要么忙于生存,要么赶紧去死!
  • 内心强大到混蛋,比什么都好!
  • 规范流程比制定制度更重要!
  • 立志需要高远,但不能急功近利;
    行动需要迅速,却不可贪图速成。
  • 不要强求人品,要设计高效的机制。
  • 你弱的时候,身边都是鸡零狗碎;
    你强的时候,身边都是风和日丽。
  • 机制比人品更可靠,契约比感情更可靠。
  • 合作不意味着没有冲突,却是控制冲突的最好方法。
  • 误解是人生常态,理解本是稀缺的例外。
  • 成功和不成功之间,只差一次坚持!
  • 祁连卧北雪,大漠壮雄关。
  • 利益顺序,过程公开,机会均等,付出回报。