项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 7268
使用教程
环境要求
- Python 环境(需可通过 pip 安装包)
- pip 包管理器
- 使用 DuckDB 查询时需 duckdb v0.7+(否则可能 segfault)
- 会用到 pandas、pyarrow、numpy(示例代码中导入)
安装与启动步骤
-
1安装 pylance
README 给出的标准安装方式,用 pip 安装稳定版 pylance 包即可开始使用。
pip install pylance -
2可选安装预览版
预览版发布更频繁,包含最新特性和修复;如需固定版本建议优先用稳定版。
pip install --pre --extra-index-url https://pypi.fury.io/lance-format pylance -
3将 Parquet 转为 Lance
用 pandas 造一个 DataFrame,先写成 parquet,再用 lance.write_dataset 转成 lance 格式。
import lance import pandas as pd import pyarrow as pa import pyarrow.dataset df = pd.DataFrame({"a": [5], "b": [10]}) uri = "/tmp/test.parquet" tbl = pa.Table.from_pandas(df) pa.dataset.write_dataset(tbl, uri, format='parquet') parquet = pa.dataset.dataset(uri, format='parquet') lance.write_dataset(parquet, "/tmp/test.lance") -
4读取 Lance 数据
用 lance.dataset 打开 .lance 目录,返回的是 pyarrow Dataset,可转成 Pandas DataFrame。
import lance import pyarrow as pa dataset = lance.dataset("/tmp/test.lance") assert isinstance(dataset, pa.dataset.Dataset) df = dataset.to_table().to_pandas() print(df) -
5下载 sift1m 数据
README 提供的向量检索示例数据集,用 wget 下载后解压得到 sift 目录。
wget ftp://ftp.irisa.fr/local/texmex/corpus/sift.tar.gz tar -xzf sift.tar.gz -
6写入向量数据
读取 sift_base.fvecs 二进制,转成向量表后写入 vec_data.lance,可设置分组和文件行数。
import lance from lance.vector import vec_to_table import numpy as np import struct nvecs = 1000000 ndims = 128 with open("sift/sift_base.fvecs", mode="rb") as fobj: buf = fobj.read() data = np.array(struct.unpack("<128000000f", buf[4 : 4 + 4 * nvecs * ndims])).reshape((nvecs, ndims)) dd = dict(zip(range(nvecs), data)) table = vec_to_table(dd) uri = "vec_data.lance" sift1m = lance.write_dataset(table, uri, max_rows_per_group=8192, max_rows_per_file=1024*1024) -
7构建向量索引
对 vector 列建 IVF_PQ 索引,num_partitions 对应 IVF,num_sub_vectors 对应 PQ。
sift1m.create_index("vector", index_type="IVF_PQ", num_partitions=256, # IVF num_sub_vectors=16) # PQ -
8执行相似性搜索
用 DuckDB 从数据集中抽样 100 个查询向量,作为后续搜索的输入。
import duckdb import numpy as np sample = duckdb.query("SELECT vector FROM dataset USING SAMPLE 100").to_df() query_vectors = np.array([np.array(x) for x in sample.vector])
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
max_rows_per_group | 否 | 写入时每个 group 的最大行数,影响分块粒度 | 8192 |
max_rows_per_file | 否 | 写入时每个文件的最大行数,影响文件切分 | 1024*1024 |
index_type | 是 | 向量索引类型,如 IVF_PQ | IVF_PQ |
num_partitions | 否 | IVF 索引的分区数量 | 256 |
num_sub_vectors | 否 | PQ 量化使用的子向量数量 | 16 |
如何确认成功
执行 lance.dataset("/tmp/test.lance") 返回 pyarrow Dataset 对象,且可 to_pandas() 打印出数据。
常见问题
Q:DuckDB 查询时出现 segfault 怎么办?
A:README 提示:确认已安装 duckdb v0.7+,旧版本可能导致段错误。
Q:预览版和正式版有什么区别?
A:预览版发布更频繁,包含最新功能和修复,与正式版测试级别相同,并保证至少 6 个月内可下载。
Q:想固定某个版本该装哪个?
A:README 建议需要固定版本时优先选择稳定版(正式 release),而不是预览版。
Q:向量搜索示例需要多大内存?
A:README 用 100 万条 128 维向量(nvecs=1000000、ndims=128),数据量较大,请确保机器内存充足。
注意事项
- README 中的所有示例路径(如 /tmp/test.lance、vec_data.lance、sift/sift_base.fvecs)均为示例,实际使用时替换为自己环境中的路径。
- 预览版通过 --extra-index-url https://pypi.fury.io/lance-format 安装,正式版直接 pip install pylance。
- Lance 兼容 Pandas、DuckDB、Polars、PyArrow、Ray、Spark 等工具,更多集成仍在扩展中。
核心亮点
- 随机访问性能提升高达 100 倍,显著加速数据加载和采样
- 内置向量索引,原生支持相似性搜索和 ANN 检索
- 数据版本控制,支持时间旅行和回滚,便于实验管理
不足之处
- 生态相对年轻,社区和文档有待完善
- 与 Parquet 等成熟格式相比,工具链和兼容性仍需时间积累
适用场景
- 大规模多模态数据集(如图像、视频、文本)的训练前处理
- 需要快速随机访问和采样的数据增强与探索
- 构建支持向量检索的 RAG 或推荐系统数据管道
替代项目
Apache Parquet、HDF5、WebDataset
同类项目推荐
VectorCode
开源
给代码建索引,让 LLM 更懂你的仓库
A code repository indexing tool to supercharge your LLM experience.
agentsecrets
开源
让 AI 代理安全使用凭证,无需泄露秘密
Zero-knowledge credentials infrastructure built for AI agents to operate, not just c···
WaLiAPI
开源
把多家大模型渠道收进本地网关,一个地址喂给所有 AI 编程工具
WaLiAPI 是一款本地运行的 LLM API 网关桌面软件(Tauri 2 + React + Rust)。支持各类 LL···
ai-gateway
开源
一个网关管所有AI大模型,统一接入、限流、控成本
Manages Unified Access to Generative AI Services built on Envoy Gateway
MemTrace
开源
给大模型记忆装个行车记录仪,出错秒级定位归因
MemTrace: Tracing and Attributing Errors in Large Language Model Memory Systems
destructive_command_guard
开源
给 AI 智能体装上安全锁,防止误删误推毁仓库。
A fast Rust safety hook that blocks destructive shell, git, and filesystem commands ···
gpt2giga
开源
改个地址,现有 LLM 客户端直接接 GigaChat
FastAPI proxy for OpenAI, Anthropic and Gemini compatible clients backed by the Giga···
jina-cli
开源
一行命令,把任意网页变成 AI 能读懂的 Markdown
A lightweight CLI tool wrapping Jina AI Reader API for AI Agents. Fetch and parse an···
avr-infra
开源
一键拉起语音代理,对接Asterisk实现智能对话
The AVR Infrastructure project is designed to launch the Agent Voice Response applic···
