部署AI大模型(ollama、deepseek、向量数据库、LangChainGo)
# 一、使用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 条回复
- 需要登录 后方可回复, 如果你还没有账号请点击这里注册。
wiseAI
✨ 梦初醒 茅塞开
- 不经他人苦,莫劝他人善。
- 能量足,心态稳,温和坚定可以忍。
- 辛苦决定不了收入,真正决定收入的只有一个,就是不可替代性。
- 要么忙于生存,要么赶紧去死!
- 内心强大到混蛋,比什么都好!
- 规范流程比制定制度更重要!
-
立志需要高远,但不能急功近利;
行动需要迅速,却不可贪图速成。 - 不要强求人品,要设计高效的机制。
-
你弱的时候,身边都是鸡零狗碎;
你强的时候,身边都是风和日丽。 - 机制比人品更可靠,契约比感情更可靠。
- 合作不意味着没有冲突,却是控制冲突的最好方法。
- 误解是人生常态,理解本是稀缺的例外。
- 成功和不成功之间,只差一次坚持!
- 祁连卧北雪,大漠壮雄关。
- 利益顺序,过程公开,机会均等,付出回报。
