 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package faiss
 | |
| 
 | |
| /*
 | |
| #include <faiss/c_api/IndexFlat_c.h>
 | |
| #include <faiss/c_api/Index_c.h>
 | |
| */
 | |
| import "C"
 | |
| import "unsafe"
 | |
| 
 | |
| // IndexFlat is an index that stores the full vectors and performs exhaustive
 | |
| // search.
 | |
| type IndexFlat struct {
 | |
| 	Index
 | |
| }
 | |
| 
 | |
| // NewIndexFlat creates a new flat index.
 | |
| func NewIndexFlat(d int, metric int) (*IndexFlat, error) {
 | |
| 	var idx faissIndex
 | |
| 	if c := C.faiss_IndexFlat_new_with(
 | |
| 		&idx.idx,
 | |
| 		C.idx_t(d),
 | |
| 		C.FaissMetricType(metric),
 | |
| 	); c != 0 {
 | |
| 		return nil, getLastError()
 | |
| 	}
 | |
| 	return &IndexFlat{&idx}, nil
 | |
| }
 | |
| 
 | |
| // NewIndexFlatIP creates a new flat index with the inner product metric type.
 | |
| func NewIndexFlatIP(d int) (*IndexFlat, error) {
 | |
| 	return NewIndexFlat(d, MetricInnerProduct)
 | |
| }
 | |
| 
 | |
| // NewIndexFlatL2 creates a new flat index with the L2 metric type.
 | |
| func NewIndexFlatL2(d int) (*IndexFlat, error) {
 | |
| 	return NewIndexFlat(d, MetricL2)
 | |
| }
 | |
| 
 | |
| // Xb returns the index's vectors.
 | |
| // The returned slice becomes invalid after any add or remove operation.
 | |
| func (idx *IndexFlat) Xb() []float32 {
 | |
| 	var size C.size_t
 | |
| 	var ptr *C.float
 | |
| 	C.faiss_IndexFlat_xb(idx.cPtr(), &ptr, &size)
 | |
| 	return (*[1 << 30]float32)(unsafe.Pointer(ptr))[:size:size]
 | |
| }
 | |
| 
 | |
| // AsFlat casts idx to a flat index.
 | |
| // AsFlat panics if idx is not a flat index.
 | |
| func (idx *IndexImpl) AsFlat() *IndexFlat {
 | |
| 	ptr := C.faiss_IndexFlat_cast(idx.cPtr())
 | |
| 	if ptr == nil {
 | |
| 		panic("index is not a flat index")
 | |
| 	}
 | |
| 	return &IndexFlat{&faissIndex{ptr}}
 | |
| }
 |