LanceDB Node.js Vector Search

Búsqueda vectorial utilizando la base de datos vectorial LanceDB y los modelos de incrustación de Ollama.

Documentación

LanceDB Node.js Vector Search

Una implementación en Node.js para búsqueda vectorial usando LanceDB y el modelo de embeddings de Ollama.

Resumen

Este proyecto demuestra cómo:

  • Conectarse a una base de datos LanceDB
  • Crear funciones de embedding personalizadas usando Ollama
  • Realizar búsquedas de similitud vectorial contra documentos almacenados
  • Procesar y mostrar resultados de búsqueda

Requisitos previos

  • Node.js (v14 o posterior)
  • Ollama ejecutándose localmente con el modelo nomic-embed-text
  • Ubicación de almacenamiento de LanceDB con permisos de lectura/escritura

Instalación

  1. Clonar el repositorio
  2. Instalar dependencias:
pnpm install

Dependencias

  • @lancedb/lancedb: Cliente de LanceDB para Node.js
  • apache-arrow: Para manejar datos columnares
  • node-fetch: Para hacer llamadas API a Ollama

Uso

Ejecute el script de prueba de búsqueda vectorial:

pnpm test-vector-search

O ejecute directamente:

node test-vector-search.js

Configuración

El script se conecta a:

  • LanceDB en la ruta configurada
  • API de Ollama en http://localhost:11434/api/embeddings

Configuración de MCP

Para integrarse con Claude Desktop como servicio MCP, agregue lo siguiente a su JSON de configuración de MCP:

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

Reemplace las rutas con sus rutas de instalación reales:

  • /path/to/lancedb-node/dist/index.js - Ruta al archivo index.js compilado
  • /path/to/your/lancedb/storage - Ruta a su directorio de almacenamiento de LanceDB

Función de Embedding Personalizada

El proyecto incluye un OllamaEmbeddingFunction personalizado que:

  • Envía texto a la API de Ollama
  • Recibe embeddings con 768 dimensiones
  • Los formatea para usarlos con LanceDB

Ejemplo de Búsqueda Vectorial

El ejemplo busca "cómo definir criterios de éxito" en la tabla "ai-rag", mostrando los resultados con sus puntuaciones de similitud.

Licencia

Licencia MIT

Contribuciones

¡Las contribuciones son bienvenidas! No dude en enviar un Pull Request.