LanceDB

Integrates with
LanceDB, Ollama

LanceDB Node.js Vector Search

A Node.js implementation for vector search using LanceDB and Ollama's embedding model.

Overview

This project demonstrates how to:

  • Connect to a LanceDB database
  • Create custom embedding functions using Ollama
  • Perform vector similarity search against stored documents
  • Process and display search results

Prerequisites

  • Node.js (v14 or later)
  • Ollama running locally with the nomic-embed-text model
  • LanceDB storage location with read/write permissions

Installation

  1. Clone the repository
  2. Install dependencies:
pnpm install

Dependencies

  • @lancedb/lancedb: LanceDB client for Node.js
  • apache-arrow: For handling columnar data
  • node-fetch: For making API calls to Ollama

Usage

Run the vector search test script:

pnpm test-vector-search

Or directly execute:

node test-vector-search.js

Configuration

The script connects to:

  • LanceDB at the configured path
  • Ollama API at http://localhost:11434/api/embeddings

MCP Configuration

To integrate with Claude Desktop as an MCP service, add the following to your MCP configuration JSON:

{
  "mcpServers": {
    "lanceDB": {
      "command": "node",
      "args": [
        "/path/to/lancedb-node/dist/index.js",
        "--db-path",
        "/path/to/your/lancedb/storage"
      ]
    }
  }
}

Replace the paths with your actual installation paths:

  • /path/to/lancedb-node/dist/index.js - Path to the compiled index.js file
  • /path/to/your/lancedb/storage - Path to your LanceDB storage directory

Custom Embedding Function

The project includes a custom OllamaEmbeddingFunction that:

  • Sends text to the Ollama API
  • Receives embeddings with 768 dimensions
  • Formats them for use with LanceDB

Vector Search Example

The example searches for "how to define success criteria" in the "ai-rag" table, displaying results with their similarity scores.

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.