Repository navigation
Expand file tree
/
Copy pathtrained_index.go
More file actions
53 lines (45 loc) · 1.74 KB
/
Copy pathtrained_index.go
File metadata and controls
53 lines (45 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Copyright (c) 2026 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 zap
import (
"encoding/binary"
"fmt"
index "github.com/blevesearch/bleve_index_api"
)
func (sb *SegmentBase) GetCoarseQuantizer(field string) (interface{}, error) {
fieldIDPlus1 := sb.fieldsMap[field]
if fieldIDPlus1 <= 0 {
return nil, fmt.Errorf("field %s does not exist in segment", field)
}
vectorSection := sb.fieldsSectionsMap[fieldIDPlus1-1][SectionFaissVectorIndex]
// check if the field has a vector section in the segment.
if vectorSection <= 0 {
return nil, fmt.Errorf("field %s does not have a vector section in the segment", field)
}
pos := vectorSection
// doc values
for i := 0; i < 2; i++ {
_, n := binary.Uvarint(sb.mem[pos : pos+binary.MaxVarintLen64])
pos += uint64(n)
}
// read the index optimization type
opt, n := binary.Uvarint(sb.mem[pos : pos+binary.MaxVarintLen64])
pos += uint64(n)
// get the optimization type string from the reverse lookup map
optStr := index.VectorIndexOptimizationsReverseLookup[int(opt)]
opts := newVectorCacheOptions(sb.mem[pos:], uint32(sb.numDocs), nil, false, sb.fileReader, optStr, true)
return sb.trainedIndexCache.loadOrCreate(fieldIDPlus1-1, opts)
}