| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
This package is not in the latest version of its module.
Go to latest Published: Jun 14, 2024 License: CC0-1.0The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Modules with tagged versions give importers more predictable builds.
When a project reaches major version v1 it is considered stable.
This section is empty.
This section is empty.
CosineDistance computes the cosine distance between two vectors.
EuclideanDistance computes the Euclidean distance between two vectors.
func RegisterDistanceFunc(name string, fn DistanceFunc)
RegisterDistanceFunc registers a distance function with a name. A distance function must be registered here before a graph can be exported and imported.
Analyzer is a struct that holds a graph and provides methods for analyzing it. It offers no compatibility guarantee as the methods of measuring the graph's health with change with the implementation.
Connectivity returns the average number of edges in the graph for each non-empty layer.
Topography returns the number of nodes in each layer of the graph.
DistanceFunc is a function that computes the distance between two vectors.
type Graph[K cmp.Ordered] struct { // Distance is the distance function used to compare embeddings. Distance DistanceFunc // Rng is used for level generation. It may be set to a deterministic value // for reproducibility. Note that deterministic number generation can lead to // degenerate graphs when exposed to adversarial inputs. Rng *rand.Rand // M is the maximum number of neighbors to keep for each node. // A good default for OpenAI embeddings is 16. M int // Ml is the level generation factor. // E.g., for Ml = 0.25, each layer is 1/4 the size of the previous layer. Ml float64 // EfSearch is the number of nodes to consider in the search phase. // 20 is a reasonable default. Higher values improve search accuracy at // the expense of memory. EfSearch int // contains filtered or unexported fields }
Graph is a Hierarchical Navigable Small World graph. All public parameters must be set before adding nodes to the graph. K is cmp.Ordered instead of of comparable so that they can be sorted.
NewGraph returns a new graph with default parameters, roughly designed for storing OpenAI embeddings.
Add inserts nodes into the graph. If another node with the same ID exists, it is replaced.
Delete removes a node from the graph by key. It tries to preserve the clustering properties of the graph by replenishing connectivity in the affected neighborhoods.
Dims returns the number of dimensions in the graph, or 0 if the graph is empty.
Export writes the graph to a writer.
T must implement io.WriterTo.
Import reads the graph from a reader. T must implement io.ReaderFrom. The imported graph does not have to match the exported graph's parameters (except for dimensionality). The graph will converge onto the new parameters.
SavedGraph is a wrapper around a graph that persists changes to a file upon calls to Save. It is more convenient but less powerful than calling Graph.Export and Graph.Import directly.
func LoadSavedGraph[K cmp.Ordered](path string) (*SavedGraph[K], error)
LoadSavedGraph opens a graph from a file, reads it, and returns it.
If the file does not exist (i.e. this is a new graph), the equivalent of NewGraph is returned.
It does not hold open a file descriptor, so SavedGraph can be forgotten without ever calling Save.
func (g *SavedGraph[K]) Save() error
Save writes the graph to the file.
| Back | FazBrowse Home | New Git URL |