hupe1980 / vecgo

πŸ§¬πŸ”πŸ—„οΈ Unlock the power of vector indexing and search in your Go applications with the HNSW algorithm for approximate nearest neighbor search, seamlessly embedded within your application.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ§¬πŸ”πŸ—„οΈ Vecgo

Build Status Go Reference goreportcard License: MIT

Vecgo is a Go library designed for efficient vector indexing and searching, supporting various index types and emphasizing approximate nearest neighbor search. It provides a versatile and user-friendly interface for managing and querying vast collections of high-dimensional vectors.

⚠️ This is experimental and subject to breaking changes.

Features

  • Support for multiple index types, including flat and HNSW (Hierarchical Navigable Small World) algorithms.
  • Customizable options for memory usage and search performance.
  • Efficient handling of high-dimensional vectors.
  • Embeddable vector store for seamless integration with Go applications.

Usage

Here's a basic example demonstrating how to perform nearest neighbor search with Vecgo:

package main

import (
	"fmt"
	"log"

	"github.com/hupe1980/vecgo"
)

func main() {
	vg := vecgo.NewHNSW[string]()
	// vg := vecgo.NewFlat[string]()

	_, err := vg.Insert(vecgo.VectorWithData[string]{
		Vector: []float32{1.0, 2.0, 2.5},
		Data:   "Hello World!",
	})
	if err != nil {
		log.Fatal(err)
	}

	k := 5
	
	result, err := vg.KNNSearch([]float32{1.0, 2.0, 2.5}, k)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(result[0].Data)
}

For more information on each method, please refer to the GoDoc documentation.

Contributing

Contributions to Vecgo are welcome! Feel free to open issues for bug reports, feature requests, or submit pull requests with improvements.

License

Vecgo is licensed under the MIT License. See the LICENSE file for details.

About

πŸ§¬πŸ”πŸ—„οΈ Unlock the power of vector indexing and search in your Go applications with the HNSW algorithm for approximate nearest neighbor search, seamlessly embedded within your application.

License:MIT License


Languages

Language:Go 66.6%Language:Assembly 27.2%Language:C 5.6%Language:Makefile 0.6%