{"id":32,"library":"lancedb","title":"LanceDB","description":"Embedded, serverless vector database built on the Lance columnar format (Apache Arrow-based). Runs in-process with no separate server required — data is stored on the local filesystem or object storage (S3, GCS, Azure). Supports vector similarity search, full-text search, SQL filtering, and automatic versioning. Also available as a managed cloud service (LanceDB Cloud). Python package is in 'Alpha' status on PyPI despite being production-used. Backed by pyarrow and pylance (the Lance Rust library, not Microsoft's Python language server).","status":"active","version":"0.29.2","language":"python","source_language":"en","source_url":"https://github.com/lancedb/lancedb","tags":["lancedb","lance","vector-search","embedded-database","serverless","arrow","rag","multimodal","ann","s3"],"install":[{"cmd":"pip install lancedb","lang":"bash","label":"Core install"},{"cmd":"pip install lancedb[embeddings]","lang":"bash","label":"With built-in embedding functions (OpenAI, HF, etc.)"},{"cmd":"pip install lancedb[azure]","lang":"bash","label":"With Azure Blob Storage support"},{"cmd":"pip install --pre --extra-index-url https://pypi.fury.io/lancedb/ lancedb","lang":"bash","label":"Preview/nightly builds"}],"dependencies":[{"reason":"Required. All data is represented as PyArrow tables. Vectors are stored as fixed-size list arrays.","package":"pyarrow","optional":false},{"reason":"Required. The Lance format Rust library (Python bindings). NOT Microsoft's Python language server — different package despite the same name.","package":"pylance","optional":false},{"reason":"Required for vector operations.","package":"numpy","optional":false},{"reason":"Required for schema definitions.","package":"pydantic","optional":false}],"imports":[{"note":"Top-level import works. Use lancedb.connect() for sync or lancedb.connect_async() for async.","symbol":"lancedb","correct":"import lancedb"},{"note":"LanceDB schemas require LanceModel, not plain pydantic BaseModel. Vector field uses lancedb's Vector type.","wrong":"from pydantic import BaseModel","symbol":"LanceModel (schema)","correct":"from lancedb.pydantic import LanceModel, Vector"}],"quickstart":{"code":"import lancedb\nimport numpy as np\nfrom lancedb.pydantic import LanceModel, Vector\n\n# Connect (creates directory if not exists)\ndb = lancedb.connect(\"/tmp/my-lancedb\")\n\n# Define schema using LanceModel\nclass Item(LanceModel):\n    text: str\n    vector: Vector(128)  # fixed dimensions\n\n# Create table\ntable = db.create_table(\"items\", schema=Item, mode=\"overwrite\")\n\n# Add data\ndata = [\n    Item(text=\"hello world\", vector=np.random.rand(128).astype('float32'))\n    for _ in range(100)\n]\ntable.add(data)\n\n# Vector search (returns pandas DataFrame by default)\nquery_vec = np.random.rand(128).astype('float32')\nresults = table.search(query_vec).limit(5).to_pandas()\nprint(results)\n\n# Create ANN index (required for scale)\ntable.create_index(metric=\"cosine\")  # IVF_PQ by default","lang":"python","description":"No server needed. Data is stored on disk as Lance files. create_index() is required for ANN performance — without it, all searches are exact (brute-force). Versioning is automatic: every add/delete creates a new version."},"warnings":[{"fix":"Requires AVX2-capable CPU. Check with: grep avx2 /proc/cpuinfo. No workaround via pip — must use newer hardware or build from source without AVX2.","message":"Illegal instruction (SIGILL) crash on import on older Intel CPUs (pre-AVX2). lancedb/pylance wheels are compiled with AVX2 SIMD instructions. Affects Ubuntu 20.04 on older hardware and some VMs where CPU features are masked.","severity":"breaking","affected_versions":"all"},{"fix":"If a version fails to resolve, pin to the previous minor version or add --prerelease=allow to uv. Check GitHub releases for known bad versions.","message":"Some lancedb releases have pinned a pre-release version of pylance as a hard dependency (e.g., lancedb==0.17.1 required pylance==0.21.0b5). This breaks pip/uv installs in strict environments that disallow pre-release packages.","severity":"breaking","affected_versions":"specific patch versions (0.17.1 documented, others possible)"},{"fix":"Use Python 3.10, 3.11, 3.12, or 3.13.","message":"Python >=3.10 required as of lancedb 0.25+. Earlier Python versions raise install or import errors.","severity":"breaking","affected_versions":"0.25.0+"},{"fix":"Pin in requirements: lancedb==0.29.2. Review CHANGELOG before upgrading.","message":"PyPI status is 'Development Status :: 3 - Alpha' despite being widely used in production. The API has had breaking changes between minor versions. Pin lancedb to a specific version in production.","severity":"gotcha","affected_versions":"all"},{"fix":"Call table.create_index(metric='cosine') after loading data. For large datasets, tune num_partitions and num_sub_vectors for IVF_PQ.","message":"ANN index (create_index) must be created explicitly. Without it, all searches are O(n) brute-force regardless of dataset size. No warning is emitted — queries silently degrade at scale.","severity":"gotcha","affected_versions":"all"},{"fix":"Periodically run table.compact_files() and table.cleanup_old_versions() to manage storage. This is not done automatically.","message":"Automatic versioning creates a new Lance snapshot on every write operation. On high-frequency write workloads this accumulates many small version files rapidly, increasing storage and compaction overhead.","severity":"gotcha","affected_versions":"all"},{"fix":"Never manually pip install pylance expecting lancedb's version. It is pulled in automatically by lancedb.","message":"pylance (the LanceDB dependency) is a completely different package from pylance (Microsoft's Python language server for VS Code). pip install pylance without context installs Microsoft's package. lancedb's pylance is only installed as a transitive dependency.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-12T05:11:54.120Z","next_check":"2026-05-28T00:00:00.000Z","problems":[{"fix":"Ensure `lancedb` and its dependencies are properly installed. It is recommended to use a fresh virtual environment and reinstall `lancedb` with `pip install lancedb`. If the issue persists, check your `pylance` installation.","cause":"This error occurs when the underlying `lance` or `pylance` dependency, which `lancedb` relies on for its core functionality, is not correctly installed or accessible in your Python environment, often due to dependency conflicts or specific `lancedb` versions.","error":"ModuleNotFoundError: No module named 'lance.vector'"},{"fix":"Instead of `from lancedb import LanceDb`, use `import lancedb` and then connect using `db = lancedb.connect(\"path/to/db\")`.","cause":"Developers are attempting to import a class named 'LanceDb', which does not exist in the `lancedb` library's top-level module. The correct way to establish a database connection is by calling `lancedb.connect()`.","error":"ImportError: cannot import name 'LanceDb' from 'lancedb'"},{"fix":"Upgrade both `lancedb` and `pyarrow` to their latest compatible versions using `pip install --upgrade lancedb pyarrow`. If issues persist, refer to LanceDB's documentation for specific `pyarrow` version requirements.","cause":"This `AttributeError` indicates an incompatibility between the installed version of `lancedb` and `pyarrow`. `lancedb` depends on specific `pyarrow` features, and if your `pyarrow` version is too old or too new, this error can arise.","error":"AttributeError: 'pyarrow.lib.DataType' object has no attribute 'value_field'"},{"fix":"Upgrade your `pyarrow` library to version `16.0.0` or newer by running `pip install --upgrade \"pyarrow>=16.0.0\"`.","cause":"This error happens when `lancedb` tries to use a method (`set_column`) on `pyarrow.lib.RecordBatch` that is not available in the installed `pyarrow` version, typically occurring with `pyarrow` versions older than 16.0.0.","error":"RuntimeError: lance error: LanceError(Arrow): Arrow error: C Data interface error: Unknown error: 'pyarrow.lib.RecordBatch' object has no attribute 'set_column'. Detail: Python exception: AttributeError."}],"ecosystem":"pypi","meta_description":null,"install_score":0,"install_tag":"stale","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"azure","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.85,"mem_mb":37.4,"disk_size":"367M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":3.9,"mem_mb":37.5,"disk_size":"366M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.08,"mem_mb":52.4,"disk_size":"406M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"azure","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.77,"mem_mb":38.6,"disk_size":"378M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.78,"mem_mb":38.7,"disk_size":"377M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":7.28,"mem_mb":55.6,"disk_size":"421M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"azure","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.5,"mem_mb":38,"disk_size":"365M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.37,"mem_mb":38.1,"disk_size":"364M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":7.24,"mem_mb":54.7,"disk_size":"407M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"azure","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.2,"mem_mb":38.4,"disk_size":"365M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.4,"mem_mb":38.5,"disk_size":"364M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":6.91,"mem_mb":56.2,"disk_size":"407M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"azure","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":4.41,"mem_mb":37.2,"disk_size":"375M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":4.44,"mem_mb":37.4,"disk_size":"375M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"azure","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":5.61,"mem_mb":53.6,"disk_size":"416M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"embeddings","exit_code":1,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]},"quickstart_checks":{"last_tested":"2026-05-12","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}