Características
- Tiny : está en el nombre. Es literalmente solo un servidor Axum. Extremadamente fácil de personalizar, alrededor de 600 líneas de código.
- Rápido : TinyVector debe tener una velocidad comparable a las bases de datos vectoriales avanzadas cuando se trata de conjuntos de datos pequeños a medianos, y una precisión ligeramente mejor.
- Escalas verticales : TinyVector almacena todos los índices en la memoria para consultar rápido. Muy fácil de escalar hasta más de 100 millones de dimensiones vectoriales sin problemas.
- Open Fore : MIT con licencia, gratis para siempre.
Pronto
- Consultas potentes : permita el filtrado por los metadatos vectoriales proporcionados sin ralentizar la búsqueda hacia abajo.
- Modelos integrados : pronto no tendrá que traer sus propios vectores, solo generarlos en el servidor automáticamente. Con el objetivo de apoyar a SBERT, abrazando modelos de cara, OpenAi, Cohere, etc.
- Bibliotecas TypeScript/Python : debería poder generar automáticamente clientes bastante buenos utilizando el esquema OpenAPI incluido.
Empezando
? Estibador
Proporcionamos un contenedor Docker liviano que puede ejecutar en cualquier lugar. Solo se necesita un comando para ponerse en funcionamiento con los últimos cambios:
docker run
-p 8000:8000
ghcr.io/m1guelpf/tinyvector:edge
Tenga en cuenta que cuando se ejecuta a través de Docker Compose o Kubernetes, asegúrese de unir un volumen a /tinyvector/storage para persistencia. Esto se maneja automáticamente en el comando anterior.
Edificio desde cero
Puede construir TinyVector a partir de la última versión etiquetada ejecutando cargo install tinyvector (es posible que deba instalar Rust primero). Luego, ejecute tinyvector para iniciar el servidor.
También puede construirlo a partir de la última confirmación clonando el repositorio y ejecutando cargo build --release , y ejecutarlo con ./target/release/tinyvector .
¿Por qué usar TinyVector?
La mayoría de las bases de datos vectoriales son excesivas para configuraciones simples. Por ejemplo:
- Uso de incrustaciones para chatear con sus documentos. La mayoría de la búsqueda de documentos no está cerca de lo que necesitaría para justificar la aceleración de la velocidad de búsqueda con HNSW o FAISS.
- Hacer busca su sitio web o tienda. A menos que esté vendiendo 1,000,000 de artículos, no necesita pinecone.
? Incrustaciones?
Los incrustaciones son una forma de comparar cosas similares, de la misma manera que los humanos comparan cosas similares, al convertir el texto en una pequeña lista de números. Las piezas similares de texto tendrán números similares, los diferentes tienen números muy diferentes.
Lea la explicación de Openai.
Expresiones de gratitud
- Tinyvector de Will Depue (Python+Sqlite+Numpy) me inspiró a construir una base de datos vectorial desde cero (y pedir prestado el nombre). También contribuirá con muchas ideas para optimizar el rendimiento.
? Licencia
Este proyecto es de código abierto bajo la licencia MIT. Consulte el archivo de licencia para obtener más información.