13 #include <faiss/IndexFlat.h>
21 float *xb =
new float[d * nb];
22 float *xq =
new float[d * nq];
24 for(
int i = 0; i < nb; i++) {
25 for(
int j = 0; j < d; j++)
26 xb[d * i + j] = drand48();
27 xb[d * i] += i / 1000.;
30 for(
int i = 0; i < nq; i++) {
31 for(
int j = 0; j < d; j++)
32 xq[d * i + j] = drand48();
33 xq[d * i] += i / 1000.;
37 printf(
"is_trained = %s\n", index.is_trained ?
"true" :
"false");
39 printf(
"ntotal = %ld\n", index.ntotal);
44 long *I =
new long[k * 5];
45 float *D =
new float[k * 5];
47 index.search(5, xb, k, D, I);
51 for(
int i = 0; i < 5; i++) {
52 for(
int j = 0; j < k; j++)
53 printf(
"%5ld ", I[i * k + j]);
58 for(
int i = 0; i < 5; i++) {
59 for(
int j = 0; j < k; j++)
60 printf(
"%7g ", D[i * k + j]);
70 long *I =
new long[k * nq];
71 float *D =
new float[k * nq];
73 index.search(nq, xq, k, D, I);
76 printf(
"I (5 first results)=\n");
77 for(
int i = 0; i < 5; i++) {
78 for(
int j = 0; j < k; j++)
79 printf(
"%5ld ", I[i * k + j]);
83 printf(
"I (5 last results)=\n");
84 for(
int i = nq - 5; i < nq; i++) {
85 for(
int j = 0; j < k; j++)
86 printf(
"%5ld ", I[i * k + j]);