Incremental construction

Usage demonstrations of `SimilaritySearch` with synthetic and real world data

By Eric S. Téllez

using SimilaritySearch

Similarity search on very large datasets and high-dimensional datasets require high computational resources. In this example we show how to parallelize both the construction and search to be able to handle this kind of databases.

const dim = 16

db = MatrixDatabase(randn(Float32, dim, 10^5))
Q = MatrixDatabase(randn(Float32, dim, 30))
dist = SqL2Distance()
G = SearchGraph(; dist, db, verbose=true)
SimilaritySearch.SearchGraph{SimilaritySearch.SqL2Distance, SimilaritySearch.MatrixDatabase{Matrix{Float32}}, SimilaritySearch.AdjacencyLists.AdjacencyList{UInt32}, SimilaritySearch.BeamSearch}
  dist: SimilaritySearch.SqL2Distance SimilaritySearch.SqL2Distance()
  db: SimilaritySearch.MatrixDatabase{Matrix{Float32}}
  adj: SimilaritySearch.AdjacencyLists.AdjacencyList{UInt32}
  hints: Array{Int32}((0,)) Int32[]
  search_algo: SimilaritySearch.BeamSearch
  len: Base.RefValue{Int64}
  verbose: Bool true

The SearchGraph construction algorithm is incremental:

  • If the index is empty, an element is inserted just inserting it into the index

  • If the index is not empty, the element is inserted and connected to its nearest neighbors (looking into the current index)

the parallel construction is made with index! or append_items!, for this matter these functions accept a parallel_block argument, that controls how many elements are inserted at once, i.e., looking for its nearest neighbors in parallel and connected also in parallel.

As in the sequential version, a minimum number of elements must exists to work, and therefore, the parallel_minimum_first_block argument can also be specified. By default, it is equal to parallel_block. The parallel_block argument should be set to at least the number of available threads, and perhaps multiplying it by a small constant is also a good approach.

This example didn't run in parallel due to the document generation pipeline but all demonstrations actually do it. Nonetheless, they ran with the parallel API in single thread mode.

index!(G; parallel_block=512)
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12
SearchModels> reached maximum number of iterations 12

Note that you can't call push_item!, append_items!, or index! from several threads. The default algorithm will takes advantage of the multiple threads .

Searching

Once the index is constructed, you can solve batches in parallel and also single queries. In contrast with append, these functions can be called in multithreading algorithms. However, you must pause the searching requests while perform insertions (parallel or sequential).

I, D = searchbatch(G, Q, 10)


Threads.@threads for i in eachindex(Q)
    p = search(G, Q[i], KnnResult(10))
    res = p.res

    print("=== $i -- nearest neighbor:")
    println(res[1])
    print("=== $i -- result set:")
    println(collect(res))
    print("=== $i -- identifiers:")
    println(collect(IdView(res))) # do something with `res`
    print("=== $i -- distances:")
    println(collect(DistView(res))) # do something with `res`
end
=== 14 -- nearest neighbor:=== 17 -- nearest neighbor:=== 26 -- nearest neighbor:=== 15 -- nearest neighbor:=== 23 -- nearest neighbor:=== 7 -- nearest neighbor:=== 28 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(=== 13 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(=== 1 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(=== 19 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(=== 22 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(=== 21 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(=== 9 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x0000a4fc, 0x00018098, 0x000099da, === 20 -- nearest neighbor:0x0000b623, SimilaritySearch.AdjacencyLists.IdWeight(0x000177a7, === 6 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x000122c6, SimilaritySearch.AdjacencyLists.IdWeight(0x0001718e, 3.5315707f0)
=== 13 -- result set:4.9936514f0)
=== 26 -- result set:6.147716f0)
=== 14 -- result set:0x00011a66, 8.312232f0)
=== 1 -- result set:=== 24 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x00002a3d, === 25 -- nearest neighbor:5.4453745f0)
=== 24 -- result set:SimilaritySearch.AdjacencyLists.IdWeight(0x000175d2, 3.1444075f0)
=== 25 -- result set:4.3907385f0)
=== 23 -- result set:=== 16 -- nearest neighbor:=== 30 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x00008d01, SimilaritySearch.AdjacencyLists.IdWeight(0x00003920, 2.4710531f0)
=== 16 -- result set:7.323902f0)
=== 30 -- result set:4.5975513f0)
=== 19 -- result set:=== 18 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x0000f07a, 4.753613f0)
=== 18 -- result set:SimilaritySearch.AdjacencyLists.IdWeight(0x00016241, 4.4237056f0)
=== 15 -- result set:=== 27 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeight(0x0000c0aa, 5.1014633f0)
=== 27 -- result set:0x00015a51, 4.8346868f0)
=== 21 -- result set:SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(0x00015a51, 0x000099da, 4.8346868f0), SimilaritySearch.AdjacencyLists.IdWeight(4.9936514f0)0x00016e08, , 6.069602f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00006c88, 5.0701756f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.0xAdjacencyLists.0000fb2f, 7.230473f0), IdWeight(0x0001484b, 5.5824037f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists0x00014e5b, 7.711877f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00013289, .IdWeight(8.104624f0), 0x0001471b, 6.903092f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000063b5, SimilaritySearch.AdjacencyLists.IdWeight(8.324216f0), 0x0000c867, SimilaritySearch.AdjacencyLists.IdWeight(0x0000212a, 6.904115f0), 8.380668f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000085ec, SimilaritySearch.AdjacencyLists.IdWeight(0x000037d2, 7.0553436f0), 8.524772f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00008e22, SimilaritySearch.AdjacencyLists.IdWeight(0x000079c0, 8.550036f0), 7.717068f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.0xAdjacencyLists.IdWeight(0x0000b0ab, 7.857975f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00002b4c, 7.997687f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000148d7, 8.129131f0)]
0000edac, 8.622222f0)]
=== 21 -- identifiers:=== 26 -- identifiers:SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(0x0000b623, SimilaritySearch.AdjacencyLists.IdWeight[6.147716f0), SimilaritySearch.SimilaritySearchAdjacencyLists.IdWeight(.AdjacencyLists.IdWeight(0x000081bf, 0x0000a4fc, 6.2470655f0), SimilaritySearch.4.5975513f0)AdjacencyLists., IdWeight(0x000052e7, SimilaritySearch.6.8324847f0), === 4 -- nearest neighbor:AdjacencyLists.IdWeight(SimilaritySearch.0x00000cb6, AdjacencyLists.IdWeight(4.7454333f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000137b2, 5.7454615f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000f28f, 0x00012800, 5.9510107f0), SimilaritySearch.AdjacencyLists.IdWeight(6.990993f0)0x00008caa, 6.3074164f0), , SimilaritySearch.AdjacencyLists.IdWeight(0x0000859b, SimilaritySearch.6.485876f0AdjacencyLists), SimilaritySearch.AdjacencyLists..IdWeight(SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.AdjacencyLists.IdWeight(0x0000d7ce, [0x0000930a, IdWeight(7.1932654f0),3.9987292f0) 
SimilaritySearch.0x000056fb, SimilaritySearch.=== 4 -- result set:AdjacencyLists.IdWeight(6.5133424f0), 0x0000fbbd, 7.2577477f0)SimilaritySearch.,AdjacencyLists .IdWeight(0x00011d46, 6.584896f0), AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(0x00001c7d, SimilaritySearch.SimilaritySearchAdjacencyLists.AdjacencyLists.IdWeight(0x00004134, 7.4104156f0), .IdWeight0x00011a66, SimilaritySearch.=== 10 -- nearest neighbor:AdjacencyLists8.312232f0), .IdWeight(6.6524844f00x00008890, )SimilaritySearch7.58696f0), .SimilaritySearch.AdjacencyLists.IdWeight(0xAdjacencyLists.IdWeight(0x00004d18, SimilaritySearch.(0x0000930a, 3.9987292f0), ,00018089SimilaritySearch.AdjacencyLists.IdWeight(7.638101f0), ,  SimilaritySearch.AdjacencyLists.IdWeight(8.388442f0)SimilaritySearch.0x0000de0e, AdjacencyLists.IdWeight(, 0x000010df, 0x00000bee7.688659f0, SimilaritySearch.AdjacencyLists.IdWeight(4.329789f00x000078ce, ), 6.8189273f0)]
AdjacencyLists.IdWeight(0x00011433, SimilaritySearch8.751034f0=== 19 -- identifiers:)]
4.660141f0)=== 14 -- identifiers:
.AdjacencyLists.IdWeight(), 0x00000132, SimilaritySearch4.593604f0), .AdjacencyListsSimilaritySearch.=== 10 -- result set:AdjacencyLists.IdWeight(0x0000f315, .IdWeight(0x00002973, 9.759107f0), 5.320709f0), SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(0x0x000165d6, 000078ce, 4.660141f0), SimilaritySearch.AdjacencyLists.IdWeight((0x0x000050e4, 10.349366f0), 0000f90d, SimilaritySearch.AdjacencyLists5.563756f0), 6.0889306f0), .SimilaritySearch.AdjacencyLists.IdWeight(IdWeight(0x00018069, 0x6.1554976f0), 0001623b, SimilaritySearch.10.3883f0), SimilaritySearchAdjacencyLists.IdWeight(.0x0001425e, SimilaritySearch6.3189363f0), .SimilaritySearch.AdjacencyLists.IdWeight(0x00007c01, 10.53751f0), AdjacencyListsSimilaritySearch.AdjacencyLists.IdWeight(0x0000e49c, .IdWeight(10.550225f0), 0x00005652, SimilaritySearch.AdjacencyListsAdjacencyLists..IdWeight(IdWeight(5.988469f0), 0x00017aab, 10.565765f0), 0x000123d7, SimilaritySearch.AdjacencyLists.IdWeight(0x0000cfd6, 10.683939f0)]
6.359874f0), SimilaritySearch.SimilaritySearch.AdjacencyLists=== 1 -- identifiers:.IdWeight(0x0000bbf1, 6.021075f0AdjacencyLists.IdWeight(), 0x000112b2, 6.366139f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(0x000156b9, 6.4399004f0)]
=== 4 -- identifiers:0x000002c2, 6.344379f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000183ba, 6.4122148f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000c42e, 6.603666f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00001ddd, 6.668622f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000f4c3, 6.8201103f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000024a0, 6.9084105f0)]
=== 10 -- identifiers:UInt32[0x000099da, 0x00006c88, 0x0001484b, 0x0001471b, 0x0000c867, 0x000085ec, 0x00008e22, 0x0000b0ab, 0x00002b4c, 0x000148d7]
=== 26 -- distances:UInt32[0x000078ce, 0x0000f90d, 0x00005652, 0x0000bbf1, 0x000002c2, 0x000183ba, 0x0000c42e, 0x00001ddd, 0x0000f4c3, 0x000024a0]
=== 10 -- distances:UInt32[0x0000b623, 0x000081bf, 0x000052e7, 0x00012800, 0x0000d7ce, 0x0000fbbd, 0x00004134, 0x00008890, 0x00004d18, 0x0000de0e]
=== 14 -- distances:SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(UInt32[0x0000930a, 0x000010df, 0x00000132, 0x0000f315, SimilaritySearch.AdjacencyLists.IdWeight0x000165d6, UInt32[0x00015a51, 0x00016e08, 0x0x0000fb2f, 0x00014e5b, 0x00013289, 0x000063b5, 0x000180690000212a, 0x000037d2, 0x000079c0, 0x0000edac, ]0x0001425e, 0x000123d7, 0x000112b2, 0x000156b9]

=== 4 -- distances:=== 2 -- nearest neighbor:=== 21 -- distances:0x0001718e, 4.3907385f0), SimilaritySearch.AdjacencyLists.IdWeight([0x00001fc8, 4.3951473f0), SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(AdjacencyLists.IdWeight(0x0000c293, 0x4.493066f0), SimilaritySearch.SimilaritySearch.AdjacencyLists.AdjacencyLists.IdWeight(0x0000b053, IdWeight4.947812f0), (SimilaritySearch.AdjacencyLists.IdWeight(0000f07a0x, 0x0000d7f6, 4.753613f0), 0000234b, 5.4334235f0), SimilaritySearch.6.616137f0AdjacencyLists.IdWeight(0x0000a080, )
5.181377f0), === 2 -- result set:SimilaritySearch.SimilaritySearch.AdjacencyLists.AdjacencyLists.IdWeight(IdWeight(0x0001662e, 0x0000d57e, 5.693371f0), 5.227076f0), SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.0x00013099, AdjacencyLists.SimilaritySearch.IdWeightAdjacencyLists(0x0000445b, .IdWeight(5.399508f00x0000d7f6, ), 6.616137f0), 5.7765865f0), SimilaritySearch.AdjacencyLists.SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(0x0000cab2, AdjacencyLists.IdWeight(5.7886987f0), 0x00008ac2, IdWeight7.313968f0)SimilaritySearch., AdjacencyLists.IdWeight(0x00007a23, (5.9872746f0), SimilaritySearch.0xAdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.0000210dIdWeight(, 0x000103d5, 0x00009b4c, 6.1849427f07.3332205f0), ), SimilaritySearchSimilaritySearch.AdjacencyLists.IdWeight(.AdjacencyLists.0x00005aeb, IdWeight(5.9897113f07.163352f0)]
), === 23 -- identifiers:0x000121d2, SimilaritySearch.AdjacencyLists7.3598247f0), UInt32[0x0001718e, 0x00001fc8, 0xSimilaritySearch.AdjacencyLists.IdWeight(0000c293, 0x0000b053, .0x0000234b, 0x0001662e, 0x00013099, 0xIdWeight(0000945a, 0x00012c3d7.7161927f0), , 7.445821f0), SimilaritySearch.AdjacencyLists.SimilaritySearchIdWeight(.0xAdjacencyLists0000cab2, 0x00007a23, 0x00009b4c]
.IdWeight(=== 23 -- distances:0x00013696, 0x0000cad9, 7.614678f0), 7.812575f0), SimilaritySearch.SimilaritySearchAdjacencyLists.IdWeight(0x00017fed., AdjacencyLists.IdWeight(7.7366996f0), 0x0000327c, SimilaritySearch7.851078f0), SimilaritySearch.AdjacencyLists..IdWeight(AdjacencyLists.IdWeight0x(0001679d, 0x00008371, 7.9174895f0), 7.740246f0)SimilaritySearch.]
AdjacencyLists.IdWeight(0x0000ff70, 8.066465f0), === 18 -- identifiers:SimilaritySearch.AdjacencyLists.IdWeight(0x00011aa6, 8.132991f0)]
UInt32[0x0000f07a, 0x0000a080, 0x0000d57e, 0x0000445b, 0x0000210d, 0x00005aeb, 0x00012c3d, 0x00013696, 0x00017fed, 0x00008371]
=== 2 -- identifiers:=== 18 -- distances:UInt32[0x0000d7f6, 0x00008ac2, 0x000103d5, 0x000121d2, 0x0000945a, 0x0000cad9, 0x0000327c, 0x0001679d, 0x0000ff70, 0x00011aa6]
=== 2 -- distances:UInt32[0x00011a66, 0x00018089, 0x00011433, 0x00002973, 0x000050e4, 0x0001623b, 0x00007c01, 0x0000e49c, 0x00017aab, 0x0000cfd6]
=== 1 -- distances:Float32[Float32[8.312232, 8.388442, 8.751034, 6.147716, 9.759107, 6.2470655, 10.349366, 6.8324847, 10.38836.990993, , 10.53751, 7.1932654, 10.550225, SimilaritySearch.10.565765, AdjacencyLists.10.683939IdWeight]
(0x00014d46, SimilaritySearch.AdjacencyLists.IdWeight[7.2577477, 3.1482184f0SimilaritySearch.AdjacencyLists.IdWeight)(
0x00018098, === 7 -- result set:0x3.5315707f0), 00010737, SimilaritySearch.7.4104156, AdjacencyLists.IdWeight7.58696(, 0x7.638101, 7.688659]
5.598334f0)00003cca, 
4.0809946f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight[0x00014dce, 4.4312553f0), SimilaritySearch.AdjacencyLists.=== 17 -- result set:Float32[SimilaritySearch.3.9987292AdjacencyLists.IdWeight(, 4.329789, 0x00014d464.593604, 5.320709, 6.0889306, 6.1554976, SimilaritySearch.AdjacencyLists.IdWeight6.3189363[, 6.359874, 6.366139, 6.4399004]
, UInt32[0x0000a4fc, 0x00000cb6, 0x000137b2, 0x0000f28f, 0x00008caa, 0x0000859b, 0x000056fbIdWeight(, 0x00011d46, 0x00001c7d,0x00009033,  0x00000bee3.1482184f05.9674344f0)
0x=== 22 -- result set:0000d164Float32[, 4.761988f0), 4.9936514, 5.0701756, SimilaritySearch.AdjacencyLists=== 8 -- nearest neighbor:.IdWeight(0x00014a48, 4.8309164f0), SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight[]
SimilaritySearch.)=== 19 -- distances:SimilaritySearch.AdjacencyLists.IdWeight(Float32[,4.59755135.5824037, 6.903092, 6.904115,  4.991694f0)AdjacencyListsSimilaritySearch.AdjacencyLists.IdWeight(0x0001220b
AdjacencyLists.IdWeight(0x00006a44, 4.8748035f0), , === 6 -- result set:SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists., IdWeight(.IdWeight(0x000034a20x00010737, SimilaritySearch.AdjacencyLists.IdWeight[3.4496567f0)0x00009033, SimilaritySearch.AdjacencyLists5.9674344f0), 7.0553436, , 4.7454333, 7.717068, SimilaritySearch=== 29 -- nearest neighbor:7.8579752.6899078f05.598334f0)5.7454615, , ,SimilaritySearch.AdjacencyLists5.9510107,.IdWeight(0x000065ee,  )4.170325f0),  6.3074164, SimilaritySearch.7.997687, 
SimilaritySearch.AdjacencyLists=== 8 -- result set:..AdjacencyLists8.129131]
IdWeight, .SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.IdWeight(SimilaritySearch0x00010c14=== 5 -- nearest neighbor:.6.485876, 6.5133424, 6.584896, 6.6524844, 6.8189273]
, AdjacencyLists.IdWeight(0x(.000034a2AdjacencyLists.4.9145775f0), SimilaritySearchSimilaritySearch.IdWeight(AdjacencyLists.0x00018461, IdWeight(6.327211f0), 0x00000913, SimilaritySearch.AdjacencyLists.IdWeightAdjacencyLists.IdWeight0x000122c6, ((, 2.6899078f0), .4.991694f0AdjacencyLists), 5.2160306f0)0x00001142, 0x0001390b, 6.542831f0), SimilaritySearch.SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(5.9129295f00x00002a43, AdjacencyLists4.9817567f0), SimilaritySearch.AdjacencyLists.IdWeight().IdWeight(0x0000cfe9, .0x00004ac3, IdWeight5.0605245f0), SimilaritySearch.AdjacencyLists(0x0000510d,IdWeight SimilaritySearch.AdjacencyLists.IdWeight.IdWeight, 7.014444f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000c467AdjacencyLists.(((0x0x0000187e, 5.172039f0)]
000181ad=== 13 -- identifiers:, 
UInt32[0x00018098, 0x00003cca, 0x00014dce, 0x0000d164, 0x00014a48, 0x00006a44, 0x00010c14, 0x00002a43, 0x00004ac3, 0x0000187e]
, === 13 -- distances:3.3799698f00x0000c2d8, 5.062852f0), Float32[7.7508354f0IdWeight(7.3101563f0), 0x00011f29, )SimilaritySearch, .AdjacencyListsSimilaritySearch.AdjacencyLists.IdWeight(.IdWeight(6.0696154f00x00011d25, 0x000076ff, 7.677395f0), SimilaritySearch.AdjacencyLists.IdWeight=== 29 -- result set:8.015721f0), (SimilaritySearch.AdjacencyLists.IdWeight(0x0x00014311, 8.020849f0), 0000077c, 3.5315707, 7.717153f0),SimilaritySearch.AdjacencyListsFloat32[4.660141, 5.563756, 5.988469, 6.021075, .4.0809946, 6.3443794.4312553,,Float32[6.616137, 7.313968,)
=== 5 -- result set:  SimilaritySearch 7.33322050x0000628f, SimilaritySearch.AdjacencyLists.IdWeight(0x00001835, .7.8038445f0), SimilaritySearch.AdjacencyLists.IdWeight(,0x00013fe1, 8.035114f0),  SimilaritySearch5.2812304f0), ), .AdjacencyListsIdWeight(SimilaritySearch.AdjacencyLists..IdWeight(Float32[4.753613, 5.181377,IdWeight7.3598247, 7.7161927, 7.812575, 7.851078, 7.9174895,  (6.4122148, 0x00010058, 0xAdjacencyListsSimilaritySearch.00010e938.038503f0)]
 === 17 -- identifiers:, .IdWeight(UInt32[0x000107375.2270768.066465, 6.603666, 8.132991], 5.399508, 6.1849427, 
6.668622, 7.163352, 6.82011037.4458210x00012294, 8.202307f0), , 6.9084105,]
 7.614678, 7.7366996, 7.740246]
0x0000d0fa, 5.1138077f0), 6.7330213f0), SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.(AdjacencyLists.IdWeight(0x0000b002, 0x0000ecc9, 7.0297136f0), 5.296054f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00015752, SimilaritySearch.AdjacencyLists.IdWeight7.5797553f0),( 0x00012894, SimilaritySearch.5.418666f0), AdjacencyLists.IdWeight(AdjacencyLists.SimilaritySearch.AdjacencyLists.IdWeight(0x000052a6, ,IdWeight5.4887824f0 0x00018461, (), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch0x.00001fd70x00001142, 0x0000510d, 0x0000c467, AdjacencyLists, 0x000076ff, 0x0000077c, 0x00001835, 0x00013fe1, 0x0000972b, 5.6663265f0)0x000100585.665562f0), 0x00011a72, 7.7847023f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch..0x00004ac6, ]
AdjacencyLists=== 17 -- distances:.Float32[5.598334,IdWeight5.6775575f0), SimilaritySearch.IdWeight(AdjacencyLists.IdWeight(0x00008817, 0x000056f6, 8.289006f0), 5.853658f0), SimilaritySearch.AdjacencyListsSimilaritySearch.AdjacencyLists.IdWeight(.IdWeight(0x000070570x0001746a, , 8.440636f05.9795203f0)), , SimilaritySearch.AdjacencyLists.IdWeight(0x0000ab9b, 8.702865f0SimilaritySearch.]AdjacencyLists. IdWeight((), 0x000160f9, 0x0000b9ea, 6.327211, 7.930779f05.7229695f0)), , SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight0x000052db, [5.7667255f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00009f19, SimilaritySearch.AdjacencyLists.8.917435f0)SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.AdjacencyLists.IdWeight[,SimilaritySearch( .0x6.542831, IdWeightAdjacencyLists.IdWeight(0x00008d01, (7.014444, 0x0001390b, 00006af57.31015635.9129295f0), 2.4710531f0), ,7.677395, 7.717153, 7.8038445, 8.035114, 8.038503]
 SimilaritySearch.AdjacencyLists.IdWeight(0x00017232, SimilaritySearch.8.015805f0)AdjacencyLists.IdWeight(0x00004c27, 2.5882616f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000ddc4, , 3.467333f0), SimilaritySearch.SimilaritySearch5.84291f0.AdjacencyLists.IdWeight(0x00011b69, 9.026873f0)]
), === 22 -- identifiers:SimilaritySearch.AdjacencyLists.IdWeight(UInt32[0x00009033, 0x0000c2d8, 0x00011d25, 0x00014311, 0x00012294, 0x00008817, 0x0001746a, 0x0000ab9b, 0x00009f19, 0x00011b69]
=== 22 -- distances:0x00003595, Float32[5.9674344, 7.7508354, 8.015721, 8.020849, 8.202307, 8.289006, 8.440636, 8.702865, 8.917435, 9.026873]
5.935011f0)]
=== 7 -- identifiers:SimilaritySearch.AdjacencyLists.IdWeight(0x0000da34, 6.0181427f0), 
SimilaritySearchUInt32=== 6 -- identifiers:[0x00014d46, 0x0001220b, 0x000065ee, 0x00000913, 0x0000628f, UInt32[.AdjacencyLists0x000122c6AdjacencyLists.,IdWeight (0x0000f5d4, SimilaritySearch.3.4742208f0), AdjacencyLists.IdWeight(0x0000bb11, SimilaritySearch.4.761988AdjacencyLists.IdWeight(0x0000ae96, , .IdWeight(, 0x000181ad, 0x0000d0fa, 0x0000b002, 0x00012894, 0x0000972b, 0x0000b9ea, 0x000052db, 0x00006af5, 0x00003595]0x000146c5, 
8.12444f0)0x000052a6, SimilaritySearch.AdjacencyLists.IdWeight(0x000065de, 8.256882f0)]
, === 7 -- distances:0x00001fd7, 0x00004ac6, === 8 -- identifiers:0x000056f6, 0x00007057]
6.0452247f0), === 6 -- distances:SimilaritySearch.AdjacencyLists.IdWeight(0x00002c92, Float326.560904f0)UInt32[SimilaritySearch.AdjacencyLists.IdWeight[SimilaritySearch.Float320xAdjacencyLists.000034a2,IdWeight( 3.6018865f00x00016241, SimilaritySearch.AdjacencyLists.IdWeight[4.4237056f0), ), SimilaritySearch.0xSimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.AdjacencyLists.IdWeight(00011f290x, 4.8309164, 4.8748035, 0x4.9145775, 4.9817567, 5.0605245, 5.172039]00010e930000ee0f[4.991694, 5.062852, , 5.1138077(, , 
SimilaritySearch.AdjacencyLists.IdWeight(0x0000a1d2, 6.7179294f0), ,SimilaritySearch.AdjacencyLists.IdWeight(0x00016d7a,  6.732105f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000119de, [5.2960543.1482184, 3.4496567, 0x0000ecc94.170325, 5.2160306, 5.2812304, SimilaritySearch.AdjacencyLists.IdWeight5.6663265, 5.7229695, ,5.7667255, 5.84291, 5.935011]
 0x00015752, 0x00011a72, 0x000160f9, 3.686116f0)0x00017232,, 0x0000bb11,  0x000065de]
6.8995533f0), === 8 -- distances:SimilaritySearch.AdjacencyLists.IdWeight(Float32SimilaritySearch.[0x00017ba6, 4.8346868, 6.069602, , 3.7997224f0), 7.230473, SimilaritySearch.7.711877AdjacencyLists.IdWeight(0x00010e6d, SimilaritySearch.AdjacencyLists.IdWeight[AdjacencyLists3.8370533f0), .,8.104624,SimilaritySearchIdWeight(SimilaritySearch.AdjacencyLists.IdWeight[ 8.324216, 0x00004225, 8.380668, 8.524772, 8.550036, 5.0897284f0), SimilaritySearch.8.622222AdjacencyLists]
SimilaritySearch.AdjacencyLists.IdWeight(0x0000bcf3, 5.701196f0),.[0x0000fb35, SimilaritySearch.AdjacencyLists.IdWeight(IdWeight(4.4695616f0)
0x0000cfe9Float320x000175d2, 3.1444075f0), [ === 9 -- result set:SimilaritySearch.AdjacencyLists.IdWeight(0x0001070a, 4.948149f0), SimilaritySearch.AdjacencyLists.3.3083951f0IdWeight0x000146bf, ()2.6899078, .5.4364223f0)
SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight[=== 28 -- result set:AdjacencyLists.0x0001287a
IdWeight(AdjacencyLists.AdjacencyListsIdWeight0x000053d6, , === 20 -- result set:6.595671f0), 3.992872f0), .IdWeight( SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(0x6.0696154(0x0000c0aa, SimilaritySearch.AdjacencyLists.IdWeight[5.1014633f0), 0x000003e3, 4.0099473f0)0001332fSimilaritySearch.[SimilaritySearchSimilaritySearch.AdjacencyLists.IdWeight(0x000146bf, , 5.4364223f0), SimilaritySearchAdjacencyLists.,AdjacencyLists..AdjacencyLists.IdWeight(7.0457373f0), 0x000159bcSimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(IdWeight5.418666AdjacencyListsAdjacencyLists.IdWeight.(IdWeight0x, 5.6798205f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000ae36, (00000602, , 7.0589776f0), (0x00006533, SimilaritySearchSimilaritySearch5.087654f0), SimilaritySearch.AdjacencyLists.6.0660954f0),  ..IdWeight=== 3 -- nearest neighbor:IdWeight((0x000177a7, , AdjacencyLists.0x0000aeaf, 3.3799698f0), 5.416811f0), === 11 -- nearest neighbor:SimilaritySearch.AdjacencyLists.IdWeightIdWeight(SimilaritySearch.AdjacencyLists.IdWeight((SimilaritySearch.AdjacencyLists.IdWeight(0x0x0000fb350x00002f73SimilaritySearch.SimilaritySearch.AdjacencyLists.IdWeight(0x000109fb, 6.153761f0), 00002a3d.AdjacencyLists.IdWeight(0x0000bd28, , 0x0000181b7.0790906f0)]
, === 29 -- identifiers:6.7330213, 7.0297136, 7.5797553, 7.7847023, 7.930779, 8.015805,UInt32AdjacencyLists.5.4453745f0), SimilaritySearch.AdjacencyLists.IdWeight(=== 12 -- nearest neighbor:[IdWeight(]
0x00016926, === 16 -- identifiers:0x0x0001390b000070154.014715f0)
=== 11 -- result set:, UInt32[0x00008d01, 0x00004c27, 6.7673507f0), 0x0000ddc4, SimilaritySearch5.8074145f0), , 0x0000da34, 0x000146c5, 0x00002c92, 0x0000a1d2, 0x00016d7a, 0x000119de, 0x0001332f, 0x00000602, 0x00002f73]
=== 29 -- distances:.Float32[5.9129295, 6.0181427, 6.0452247, AdjacencyLists.IdWeightSimilaritySearch.AdjacencyLists.IdWeight(0x0001635a, (6.0712733f0), , SimilaritySearch.AdjacencyLists.IdWeight(0x00015bca, SimilaritySearch.0xAdjacencyLists.IdWeight(3.2872531f0)
000009ef, === 3 -- result set:7.0085073f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000026a0, SimilaritySearch.AdjacencyLists.IdWeight[7.0458426f0), 6.560904, 6.7179294, SimilaritySearch.6.732105,AdjacencyLists6.1731753f0), SimilaritySearch.AdjacencyLists.IdWeight 6.8995533, 7.0457373, 7.0589776, 7.0790906]
(0x000160500x00015734, , 6.422931f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000ae78, 6.4706845f0), 4.064584f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00002716, SimilaritySearch6.938677f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00006710, 7.4639883f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000083ed, 7.482415f0), SimilaritySearch.AdjacencyLists.0x0000ffa8SimilaritySearch.AdjacencyLists.IdWeight[, SimilaritySearch.AdjacencyLists.IdWeight(0x00003920, 7.323902f0), 4.654367f0, SimilaritySearch.AdjacencyLists.IdWeight(0x0000202f, 4.4695616f0))
, 7.6098f0), === 12 -- result set:SimilaritySearch.AdjacencyListsSimilaritySearch..IdWeight(AdjacencyLists.IdWeight(0x00012755, 0x00014b52.0x000062fcIdWeight(, 0x6.953158f0), 00014878, SimilaritySearch.AdjacencyLists.IdWeight7.671292f0Float32SimilaritySearch.AdjacencyLists.IdWeight(0x000026d4, 6.981037f0), [SimilaritySearch[4.766527f0.IdWeight(0x0000181bSimilaritySearch.AdjacencyLists4.3907385, 4.3951473, 4.493066, .4.947812, .), 3.2872531f0), AdjacencyLists.,IdWeight(0x0000f5d4, 0x0000ae96,0x0000ffa8, 4.654367f0), IdWeight( SimilaritySearch0x0000dc0a, SimilaritySearch.AdjacencyLists.7.1099343f0), SimilaritySearch.AdjacencyLists..IdWeight(SimilaritySearch.0x00012295, 3.5135179f0), AdjacencyListsAdjacencyLists.IdWeight(0x000152f1, .7.5724626f0, 7.7132106f0), SimilaritySearch.AdjacencyLists.IdWeight(0x0000d22c, IdWeight8.05117f0), SimilaritySearch.AdjacencyLists.IdWeight(0x000130c0, 8.413306f0), SimilaritySearch.AdjacencyLists.IdWeight(),( AdjacencyLists0xSimilaritySearch.IdWeightSimilaritySearch.AdjacencyLists.IdWeight(0x0000af6b, 7.6128736f0), SimilaritySearch0001168dAdjacencyLists.IdWeight(0x0000ece3,  (5.43342358.12444, SimilaritySearch3.7721334f0), SimilaritySearch.AdjacencyLists.IdWeight(,0x.AdjacencyLists.IdWeight(0x00010152, 7.1843634f0), , SimilaritySearch.AdjacencyLists.IdWeight(0x00002e89, 0x00007f24,  .5.355987f0AdjacencyLists.IdWeight(0x00014003, 7.672342f0)]
)]
=== 15 -- identifiers:5.693371,0x00016683, UInt32[0x00016241, 0x00004225, 0x0000bcf3, 0x000053d6, 0x00014b52, 0x000026d4.IdWeight(0x00004156, 4.3979244f0),5.4887824 5.7765865, 5.7886987, 5.9872746, 5.9897113]
, 0x4.1735005f05.4635043f0),  SimilaritySearch.AdjacencyLists.IdWeight(0x000150dd, 5.643394f0), SimilaritySearch.0xSimilaritySearch.AdjacencyLists.IdWeight[), SimilaritySearch.AdjacencyLists.IdWeightSimilaritySearch3.3083951f0SimilaritySearch0000ee0f.AdjacencyLists.IdWeight(0x), ,SimilaritySearch.AdjacencyLists. IdWeight0x(.)0x0000f40a, 6.1819377f0), SimilaritySearch.AdjacencyLists.IdWeight(,7.249364f0000169268.256882]
 , AdjacencyLists0x(0x00005713,  SimilaritySearch.4.014715f0)), SimilaritySearch.AdjacencyLists.IdWeight(.SimilaritySearch., SimilaritySearch.AdjacencyLists.IdWeight(AdjacencyLists.00017ba6, IdWeight(0000dc0a0x00010e6d, 0x0000c071, 5.726419f0), ,SimilaritySearch.AdjacencyLists.IdWeight( 8.678248f00x0001287a0x000152f1, 0x0000af6b, 0x00014003]
,0x00011079AdjacencyLists.=== 15 -- distances:=== 28 -- identifiers:UInt32[ ), SimilaritySearch.AdjacencyLists.IdWeight(0x00002b9c, 0x000003e300008d57Float32, ]
8.692659f0), 6.232506f0), SimilaritySearch.0x=== 16 -- distances:[SimilaritySearch.AdjacencyLists.IdWeight(0x0001572c, 000146bfFloat326.2400956f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00011507, 6.369444f0), SimilaritySearch.AdjacencyLists.IdWeightAdjacencyLists.(,0x0000e60f, 6.509746f0),  0x0000bd28, 0x, 5.7330575f0), IdWeight00003ed7, 0x0001635a, 0x00015bca, 0x00015734, 0x0000ae78, 0x00002716, 0x00006710, 0x000083ed, 0x00014878]
IdWeightSimilaritySearch.4.5779066f0), SimilaritySearch.=== 28 -- distances:AdjacencyListsFloat32.[IdWeight(5.4364223, 5.8074145, 0x6.0712733, 6.1731753, 6.422931, 6.4706845, 6.938677, 7.4639883, 7.482415, 00012c607.671292]
SimilaritySearch.(AdjacencyLists.AdjacencyLists.IdWeight(0x00001fa3, IdWeight000180be, 0xAdjacencyLists.IdWeight(4.897652f0), 0x00007c59, 000003245.875945f0), SimilaritySearch.AdjacencyLists., IdWeight(SimilaritySearch.4.2294474f0)AdjacencyLists.IdWeight(0x00013ad5, 5.9019117f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00007e6a, 4.2978005f0), , 0x5.665562, 5.6775575, 00015700, 5.853658, 5.2372613f0), 5.9795203]
SimilaritySearch.AdjacencyLists.IdWeight(0x00002721, 5.4552445f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.IdWeight(0x000100b7, 5.6164637f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00004f33, 5.7498665f0), ]
SimilaritySearch=== 25 -- identifiers:.AdjacencyLists.IdWeight(0x00011d26, 5.8040514f0), 4.4237056SimilaritySearch, 5.0897284, 5.701196, 6.595671, 6.953158, .6.981037, 7.1099343, 7.5724626, 7.6128736, AdjacencyLists.IdWeight(7.672342]
0x0001320f, 5.85952f0), IdWeight(SimilaritySearch.AdjacencyLists.0x000089e3, 7.5838766f00xIdWeight0000c433, (0x0000a274, 3.7173982f0), 6.1017933f0)]
=== 9 -- identifiers:SimilaritySearch.AdjacencyLists.IdWeight(0x0000e5be, 4.2716455f0), UInt32[SimilaritySearch.0xAdjacencyLists.IdWeight(0x0000df49, 0000fb354.323866f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00013314, ,4.4853315f0), SimilaritySearch.AdjacencyLists.,  0x00012755, 0x000180be, 0x00015700, 4.3864646f0)0x00002721, 0xIdWeight((0x00015983, 0x0000f688, 4.6855254f0), 8.713341f0), 000100b7SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.,AdjacencyLists.IdWeight(0x0000d618,  )8.773049f0[)2.4710531, 2.5882616, 3.467333, 3.4742208, 3.6018865, ,3.686116, , 3.7997224, 3.8370533, 3.992872, 4.0099473 SimilaritySearch6.251341f0), (.SimilaritySearch.AdjacencyLists.IdWeight(0x000140f9, UInt320x0000d3a38.803396f0)]
SimilaritySearch.AdjacencyLists.IdWeight[(0x000175d2, 0x0001070a, 0x00006533, 0x0000aeaf, 0x0001168d, 0x000150dd, 0x0000c071, 0x00011079, 0x00007c59, 0x00013ad5=== 30 -- identifiers:]0x000013a4
0x, 0x6.7682476f0), UInt32[0x00003920, SimilaritySearch.AdjacencyLists.0x0000202fIdWeight(0x00005534, 7.199599f0), ,0x00004f33, 0x00011d26, 0x0001320f , , SimilaritySearch0x6.5823064f0)]
=== 27 -- identifiers:.AdjacencyLists.000062fcIdWeight(]0x00010ca3, 4.477609f0), ,SimilaritySearch.AdjacencyLists.IdWeight(0x000061c0, 
4.617824f0), SimilaritySearch.00006a7cAdjacencyLists, .IdWeight(5.1224966f0),0x,0000c36e, 00007bbc,  4.308129f0),  === 25 -- distances:SimilaritySearch.AdjacencyLists.SimilaritySearch.AdjacencyLists.IdWeight(0x0000234b, IdWeight(4.3096757f0), 0x0000c83e, 0x00009d41Float327.638847f0), , SimilaritySearch.SimilaritySearch.AdjacencyLists.4.7050433f0), [SimilaritySearch.AdjacencyLists.IdWeight(AdjacencyLists.0xIdWeight(0000de6b, 4.888799f0), SimilaritySearchIdWeight(0x0000ae70, .0x00016545AdjacencyLists.0x0000a274]
=== 9 -- distances:4.767563f0SimilaritySearch.AdjacencyLists.IdWeight(0x0000a9ab, )Float32[,4.4695616,5.302485f0),  SimilaritySearch.AdjacencyLists.4.3512473f0)IdWeight, 4.766527, (4.897652, 0x00012e31, 5.2372613, SimilaritySearch.5.45524454.9467106f0)AdjacencyLists.IdWeight( , IdWeight(7.720994f0), SimilaritySearch.AdjacencyLists.IdWeight(0xSimilaritySearch0x0x000127ad, 5.1574483f0), SimilaritySearch.AdjacencyLists.IdWeight(0x00012a56, AdjacencyLists.IdWeight(0x0000e69d, 7.2154684f0),000035e6.AdjacencyLists.IdWeight(0x00009ba2, , 7.9450846f0)]
=== 24 -- identifiers:3.1444075,5.397475f0),  UInt32[SimilaritySearch4.948149UInt32., 0x0000c0aa[5.61646370x00002a3d, 0x00007015, 0x000009ef, 0x000026a0, 0x00010152, 0x00002e89,  , SimilaritySearch0x000089e3, 0x0000c83e, 0x00016545, SimilaritySearch.AdjacencyLists.IdWeight(.0x0000abc8, 4.9680705f0), AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.0x00001602, , , 0x000159bc, 0x0000ae36, 0x000109fb, 0x0000f40a, 0x00008d57, 0x0001572c, 5.2229443f0)5.7498665, 5.8040514, 5.85952, 6.1017933]
, , 0x00011507, 0x0000e60f, 0x0000d3a3]
SimilaritySearch=== 27 -- distances:.AdjacencyLists.IdWeight(0x00018051, IdWeight(5.3900633f0), SimilaritySearch. AdjacencyLists0x0000d22c, 0x000130c0, 0x00005713, 0x00002b9c, 0x0000f688, 0x0000d618, 0x000140f9.]
=== 30 -- distances:IdWeight(Float32[0x000127f6, 7.323902, 5.499467f0), 7.6098, 7.7132106, SimilaritySearch8.05117, 8.413306, 8.678248, 0x00013a4e, 8.692659, 8.713341, 5.1507897f0)8.773049,] 
8.803396]
=== 20 -- identifiers:UInt32[0x000177a7, 0x0000c433, 0x0000e5be, 0x0000df49, 0x00013314, 0x00009d41, 0x0000de6b, 0x00012e31, 0x0000abc8, 0x00013a4e]
=== 20 -- distances:Float32[3.3083951, Float32[3.7173982, 5.10146334.2716455, , 4.323866,AdjacencyLists 5.6798205,. IdWeight6.0660954, 6.153761, 6.1819377, (6.232506, 0x00004c95, 5.511942f0), 7.2387986f0), SimilaritySearch.AdjacencyLists.IdWeight(SimilaritySearch.AdjacencyLists.0x0000d557IdWeight, 6.24009565.5356126f0)]
=== 5 -- identifiers:, 6.369444, 6.509746, 6.5823064]
UInt32[0x0000cfe9, 0x00016050, 0x00004156, 0x00003ed7, 0x00015983, 0x00006a7c, 0x0000a9ab, 0x000035e6, 0x00004c95, 0x0000d557]
=== 5 -- distances:(0x0000e56f, 7.2431054f0), Float32[3.3799698, 0x00009ba2]
4.064584, 0001116a, 4.3979244, 4.5779066, 4.3595514f0)=== 24 -- distances:4.6855254], 
5.1224966=== 3 -- identifiers:, 5.302485, UInt324.4853315,5.397475, 5.511942, 5.5356126]
 4.7050433, 4.888799, 4.9467106, 4.9680705, Float325.1507897[]
5.4453745, 6.7673507, 7.0085073, 7.0458426, 7.1843634, 7.249364, 7.5838766, 7.638847, 7.720994, 7.9450846]
[0x0000181b, 0x00012295, 0x0000ece3, 5.087654,0x00016683, 0x00000324, 0x00007e6a, 0x00007bbc, 0x0000234b, 0x0000ae70, 0x0001116a]
=== 3 -- distances:SimilaritySearch.AdjacencyLists.IdWeight(Float32[0x000073fb3.2872531, 3.5135179, 3.7721334, 4.1735005, 4.2294474, 4.2978005, 4.308129, 4.3096757, 4.3512473, 4.3595514]
.AdjacencyLists.IdWeight(, 0x0001408c, 7.378549f0), 5.53753f0)]
SimilaritySearch.AdjacencyLists.IdWeight(0x=== 11 -- identifiers:UInt32[0x00016926, 0x00012c60, 0x00010ca3, 0x000061c0, 0x0000c36e, 0x000127ad, 0x00012a56, 0x00018051, 0x000127f6, 0x0001408c]
=== 11 -- distances:Float32[4.014715, 4.3864646, 4.477609, 4.617824, 4.767563, 5.1574483, 5.2229443, 5.3900633, 5.499467, 5.53753]
 5.416811, 5.4635043, 5.643394, 5.726419, 5.7330575, 5.875945, 000165d1, 5.9019117]
7.3918715f0)]
=== 12 -- identifiers:UInt32[0x0000ffa8, 0x00007f24, 0x00001fa3, 0x000013a4, 0x00005534, 0x0000e69d, 0x00001602, 0x0000e56f, 0x000073fb, 0x000165d1]
=== 12 -- distances:Float32[4.654367, 5.355987, 6.251341, 6.7682476, 7.199599, 7.2154684, 7.2387986, 7.2431054, 7.378549, 7.3918715]

About searching pools

Searching and also insertion methods (since they also perform searches) make use of several objects that are cached and reused to reduce memory allocations. These caches are named pools and are of type SearchGraphPools, their default values should be enough for multithreading applications, but special usage will require to review them. Among the special usages that require an explicit handling of pools we can think on objects indexing objects that are also indexes, or distance functions that can perform context switches as tasks (?).

Dependencies

Status `~/Research/SimilaritySearchDemos/site-src/Project.toml`
  [053f045d] SimilaritySearch v0.10.8
CC BY-SA 4.0 Eric S. Tellez . Last modified: March 14, 2022. Website built with Franklin.jl and the Julia programming language.