build(deps): bump github.com/blevesearch/bleve/v2 from 2.3.10 to 2.4.0
Bumps [github.com/blevesearch/bleve/v2](https://github.com/blevesearch/bleve) from 2.3.10 to 2.4.0. - [Release notes](https://github.com/blevesearch/bleve/releases) - [Commits](https://github.com/blevesearch/bleve/compare/v2.3.10...v2.4.0) --- updated-dependencies: - dependency-name: github.com/blevesearch/bleve/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
This commit is contained in:
committed by
Ralf Haferkamp
parent
8f432c4cdd
commit
68e4e81870
+69
@@ -0,0 +1,69 @@
|
||||
// Copyright (c) 2023 Couchbase, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build vectors
|
||||
// +build vectors
|
||||
|
||||
package index
|
||||
|
||||
type VectorField interface {
|
||||
Vector() []float32
|
||||
// Dimensionality of the vector
|
||||
Dims() int
|
||||
// Similarity metric to be used for scoring the vectors
|
||||
Similarity() string
|
||||
// nlist/nprobe config (recall/latency) the index is optimized for
|
||||
IndexOptimizedFor() string
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
const (
|
||||
EuclideanDistance = "l2_norm"
|
||||
|
||||
// dotProduct(vecA, vecB) = vecA . vecB = |vecA| * |vecB| * cos(theta);
|
||||
// where, theta is the angle between vecA and vecB
|
||||
// If vecA and vecB are normalized (unit magnitude), then
|
||||
// vecA . vecB = cos(theta), which is the cosine similarity.
|
||||
// Thus, we don't need a separate similarity type for cosine similarity
|
||||
CosineSimilarity = "dot_product"
|
||||
)
|
||||
|
||||
const DefaultSimilarityMetric = EuclideanDistance
|
||||
|
||||
// Supported similarity metrics for vector fields
|
||||
var SupportedSimilarityMetrics = map[string]struct{}{
|
||||
EuclideanDistance: {},
|
||||
CosineSimilarity: {},
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
const (
|
||||
IndexOptimizedForRecall = "recall"
|
||||
IndexOptimizedForLatency = "latency"
|
||||
)
|
||||
|
||||
const DefaultIndexOptimization = IndexOptimizedForRecall
|
||||
|
||||
var SupportedVectorIndexOptimizations = map[string]int{
|
||||
IndexOptimizedForRecall: 0,
|
||||
IndexOptimizedForLatency: 1,
|
||||
}
|
||||
|
||||
// Reverse maps vector index optimizations': int -> string
|
||||
var VectorIndexOptimizationsReverseLookup = map[int]string{
|
||||
0: IndexOptimizedForRecall,
|
||||
1: IndexOptimizedForLatency,
|
||||
}
|
||||
Reference in New Issue
Block a user