Infinity数据库快速入门指南
infinity 项目地址: https://gitcode.com/gh_mirrors/inf/infinity
前言
Infinity是一款高性能的向量数据库,专为处理大规模向量搜索和分析任务而设计。本文将带领开发者快速上手Infinity数据库,包括环境准备、部署方式以及基本操作。
环境准备
在开始使用Infinity之前,请确保您的系统满足以下要求:
-
硬件要求:
- CPU需要支持x86_64架构和AVX2指令集
- 建议内存不少于8GB(具体取决于数据规模)
-
操作系统:
- Linux系统(需glibc 2.17及以上版本)
- Windows 10+(需配合WSL/WSL2使用)
- MacOS(x86_64架构)
-
软件依赖:
- Python 3.10或更高版本
- Docker(如需使用容器化部署)
Docker部署Infinity
服务端部署
Linux/MacOS系统
# 创建数据存储目录并设置权限
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
# 拉取最新镜像
docker pull infiniflow/infinity:nightly
# 启动容器
docker run -d --name infinity \
-v /var/infinity/:/var/infinity \
--ulimit nofile=500000:500000 \
--network=host \
infiniflow/infinity:nightly
Windows系统
Windows用户需要通过WSL2环境运行:
- 启用WSL2并安装Ubuntu发行版
- 在WSL2中启用systemd支持
- 安装docker-ce
- 在Docker Desktop设置中启用主机网络功能
- 执行与Linux相同的启动命令
客户端安装
安装Python SDK:
pip install infinity-sdk==0.6.0.dev3
基础操作示例
连接数据库
import infinity
# 连接到Infinity服务器
infinity_obj = infinity.connect(infinity.NetworkAddress("<SERVER_IP_ADDRESS>", 23817))
创建数据库和表
# 获取默认数据库
db_object = infinity_object.get_database("default_db")
# 创建包含多种字段类型的表
table_object = db_object.create_table(
"my_table",
{
"num": {"type": "integer"},
"body": {"type": "varchar"},
"vec": {"type": "vector, 4, float"}
}
)
数据插入
# 单条数据插入
table_object.insert([
{
"num": 1,
"body": "示例文本",
"vec": [1.0, 1.2, 0.8, 0.9]
}
])
# 批量插入
table_object.insert([
{"num": 2, "body": "测试数据", "vec": [4.0, 4.2, 4.3, 4.5]},
{"num": 3, "body": "另一个示例", "vec": [2.1, 2.3, 2.0, 2.5]}
])
向量搜索
# 执行近似最近邻搜索
res = (table_object
.output(["*"]) # 返回所有字段
.match_dense(
"vec", # 向量字段名
[3.0, 2.8, 2.7, 3.1], # 查询向量
"float", # 向量数据类型
"ip", # 使用内积相似度
2 # 返回top 2结果
)
.to_pl()) # 转换为Polars DataFrame
print(res)
进阶功能
Infinity还支持以下高级功能:
- 混合搜索:结合向量搜索和全文检索
- 数据导入导出:支持从文件批量导入数据
- 数据更新删除:灵活的数据管理操作
- 多种相似度计算:支持内积(ip)、余弦(cosine)、欧式距离(l2)等
性能优化建议
- 对于生产环境,建议调整
--ulimit nofile
参数以支持更高并发 - 向量维度应根据实际应用场景合理设置
- 批量插入数据时,建议一次插入多条记录而非单条插入
- 搜索时合理设置top K值,避免不必要的数据传输
常见问题
- 连接问题:确保服务器IP和端口(23817)正确且防火墙已放行
- 性能问题:检查CPU是否支持AVX2指令集
- 存储问题:确保挂载目录有足够空间和正确权限
通过本指南,您应该已经掌握了Infinity的基本使用方法。如需更详细的功能说明和API参考,请查阅官方文档。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考