Características
- Tiny : está no nome. É literalmente apenas um servidor Axum. Extremamente fácil de personalizar, cerca de 600 linhas de código.
- FAST : Tinyvector deve ter velocidade comparável aos bancos de dados de vetores avançados quando se trata de conjuntos de dados pequenos a médios e uma precisão um pouco melhor.
- Escalas verticalmente : O TinyVector armazena todos os índices na memória para consulta rápida. Muito fácil de dimensionar até 100 milhões de dimensões vetoriais sem problemas.
- Open Source : MIT licenciado, grátis para sempre.
Breve
- Consultas poderosas : permita a filtragem pelos metadados vetoriais fornecidos sem diminuir a pesquisa.
- Modelos integrados : em breve você não terá que trazer seus próprios vetores, basta gerá -los na automação do servidor. Com o objetivo de apoiar o suporte a Sbert, abraçando modelos de rosto, openi, coere, etc.
- Bibliotecas TypeScript/Python : deve ser capaz de gerar automaticamente clientes muito bons usando o esquema OpenAPI incluído.
Começando
? Docker
Fornecemos um contêiner leve do Docker que você pode executar em qualquer lugar. É preciso apenas um comando para subir e correr com as últimas alterações:
docker run
-p 8000:8000
ghcr.io/m1guelpf/tinyvector:edge
NOTA Ao executar via Docker compor ou Kubernetes, certifique -se de vincular um volume a /tinyvector/storage para persistência. Isso é tratado automaticamente no comando acima.
Construindo do zero
Você pode criar o TinyVector a partir da versão mais recente com a execução cargo install tinyvector (pode ser necessário instalar a ferrugem primeiro). Em seguida, execute tinyvector para iniciar o servidor.
Você também pode construí -lo a partir do mais recente comprometimento clonando o repositório e executando cargo build --release e executá -lo com ./target/release/tinyvector .
Por que usar o TinyVector?
A maioria dos bancos de dados vetoriais é exagerada para configurações simples. Por exemplo:
- Usando incorporação para conversar com seus documentos. A maioria das pesquisas de documentos não está nem perto do que você precisa para justificar a velocidade de pesquisa com a HNSW ou o FAISS.
- Fazendo pesquisar seu site ou loja. A menos que você esteja vendendo 1.000.000 de itens, você não precisa de Pinecone.
? Incorporação?
As incorporações são uma maneira de comparar coisas semelhantes, da mesma maneira que os humanos comparam coisas semelhantes, convertendo o texto em uma pequena lista de números. Peças de texto semelhantes terão números semelhantes, os diferentes têm números muito diferentes.
Leia a explicação do OpenAI.
Agradecimentos
- O TinyVector do Will Depue (Python+Sqlite+Numpy) me inspirou a criar um banco de dados vetorial a partir do zero (e emprestar o nome). Também contribuiu com muitas idéias para otimizar o desempenho.
? Licença
Este projeto é de código aberto sob a licença do MIT. Consulte o arquivo de licença para obter mais informações.