Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
86 changes: 86 additions & 0 deletions examples/c++/core/main.cc
Original file line number Diff line number Diff line change
@@ -1,3 +1,89 @@
#include <cstdlib>
#include <iostream>
#include <zvec/core/interface/index.h>
#include <zvec/core/interface/index_factory.h>
#include <zvec/core/interface/index_param.h>
#include <zvec/core/interface/index_param_builders.h>

using namespace zvec::core_interface;

constexpr uint32_t kDimension = 64;
const std::string index_name{"test.index"};

Index::Pointer create_index(const BaseIndexParam::Pointer &param,
int doc_num = 10) {
auto index = IndexFactory::CreateAndInitIndex(*param);
if (!index) {
std::cout << "Failed to create index." << std::endl;
return nullptr;
}

int ret = index->Open(
index_name, StorageOptions{StorageOptions::StorageType::kMMAP, true});
if (ret != 0) {
std::cout << "Failed to open index." << std::endl;
return nullptr;
}

for (int i = 0; i < doc_num; ++i) {
std::vector<float> vector(kDimension, i / 10.0f + 0.1f);
VectorData vector_data;
vector_data.vector = DenseVector{vector.data()};
ret = index->Add(vector_data, i);
if (ret != 0) {
std::cout << "Failed to add to index." << std::endl;
return nullptr;
}
}

ret = index->Train();
if (ret != 0) {
std::cout << "Failed to train index." << std::endl;
return nullptr;
}

return index;
}

int main() {
char cmd_buf[100];
snprintf(cmd_buf, 100, "rm -f %s", index_name.c_str());
system(cmd_buf);

auto param = HNSWIndexParamBuilder()
.WithMetricType(MetricType::kInnerProduct)
.WithDataType(DataType::DT_FP32)
.WithDimension(kDimension)
.WithIsSparse(false)
.Build();
auto index = create_index(param, 1);
std::cout << "index stats: " << index->GetDocCount() << std::endl;

// query
auto query_param = HNSWQueryParamBuilder()
.with_topk(10)
.with_fetch_vector(true)
.with_ef_search(20)
.build();

SearchResult result;
VectorData query;
std::vector<float> vector(kDimension, 0.1f);
query.vector = DenseVector{vector.data()};
int ret = index->Search(query, query_param, &result);
if (ret != 0) {
std::cout << "Failed to search index." << std::endl;
return -1;
}

std::cout << "query results: " << result.doc_list_.size() << std::endl;
if (result.doc_list_.size() == 0) {
std::cout << "No results found." << std::endl;
return -1;
}

std::cout << "key: " << result.doc_list_[0].key()
<< ", score: " << result.doc_list_[0].score() << std::endl;

return 0;
}
2 changes: 1 addition & 1 deletion src/ailego/algorithm/binary_quantizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#pragma once

#include <vector>
#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/algorithm/integer_quantizer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
#include <cmath>
#include <cstring>
#include <numeric>
#include <stdexcept>
#include <ailego/math/normalizer.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/algorithm/integer_quantizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

#include <limits>
#include <vector>
#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
5 changes: 3 additions & 2 deletions src/ailego/algorithm/kmeans.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,17 @@
#include <cmath>
#include <numeric>
#include <random>
#include <ailego/container/heap.h>
#include <ailego/container/vector_array.h>
#include <ailego/math/euclidean_distance_matrix.h>
#include <ailego/math/hamming_distance_matrix.h>
#include <ailego/math/inner_product_matrix.h>
#include <ailego/math/norm2_matrix.h>
#include <ailego/math/normalizer.h>
#include <ailego/utility/matrix_helper.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/container/heap.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/float_helper.h>
#include <zvec/ailego/utility/type_helper.h>
#include "lloyd_cluster.h"

namespace zvec {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/algorithm/lloyd_cluster.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
#include <algorithm>
#include <random>
#include <ailego/parallel/lock.h>
#include <ailego/parallel/thread_pool.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/parallel/thread_pool.h>
#include <zvec/ailego/utility/type_helper.h>

namespace zvec {
namespace ailego {
Expand Down
6 changes: 3 additions & 3 deletions src/ailego/buffer/buffer_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "buffer_manager.h"
#include <atomic>
#include <mutex>
#include <ailego/logger/logger.h>
#include <ailego/pattern/defer.h>
#include <arrow/io/api.h>
#include <parquet/arrow/reader.h>
#include "ailego/internal/platform.h"
#include <zvec/ailego/buffer/buffer_manager.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/logger/logger.h>

#ifdef __clang__
#pragma clang diagnostic push
Expand Down
1 change: 1 addition & 0 deletions src/ailego/container/bitmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include <algorithm>
#include <vector>
#include <ailego/utility/bitset_helper.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/container/bloom_filter.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
#pragma once

#include <cmath>
#include <ailego/internal/platform.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>

namespace zvec {
namespace ailego {
Expand Down
6 changes: 3 additions & 3 deletions src/ailego/container/params.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "params.h"
#include <cstring>
#include <ailego/encoding/json.h>
#include "ailego/logger/logger.h"
#include <zvec/ailego/container/params.h>
#include <zvec/ailego/encoding/json.h>
#include <zvec/ailego/logger/logger.h>

//! Global environ variable
extern char **environ;
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/container/vector_array.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

#pragma once

#include "ailego/internal/platform.h"
#include "vector.h"
#include <zvec/ailego/container/vector.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/encoding/json/mod_json.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "mod_json.h"
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <zvec/ailego/encoding/json/mod_json.h>

#ifndef MOD_JSON_TOKEN_DEFOPTS
#define MOD_JSON_TOKEN_DEFOPTS 0 /* default options of token */
Expand Down
3 changes: 2 additions & 1 deletion src/ailego/hash/crc32c.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "crc32c.h"
#include <ailego/internal/cpu_features.h>
#include <zvec/ailego/hash/crc32c.h>
#include <zvec/ailego/internal/platform.h>

#if !defined(__SSE4_2__) && !defined(__ARM_FEATURE_CRC32)
/**
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/io/file.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "file.h"
#include "ailego/internal/platform.h"
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/io/file.h>
#if !defined(_WIN64) && !defined(_WIN32)
#include <sys/mman.h>
#include <sys/stat.h>
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/io/file_lock.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

#pragma once

#include "file.h"
#include <zvec/ailego/io/file.h>

namespace zvec {
namespace ailego {
Expand Down
6 changes: 3 additions & 3 deletions src/ailego/logger/logger.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "logger.h"
#include <iostream>
#include <sstream>
#include <thread>
#include <ailego/io/file.h>
#include <ailego/utility/time_helper.h>
#include <zvec/ailego/io/file.h>
#include <zvec/ailego/logger/logger.h>
#include <zvec/ailego/utility/time_helper.h>

namespace zvec {
namespace ailego {
Expand Down
8 changes: 2 additions & 6 deletions src/ailego/math/cosine_distance_matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,9 @@

#pragma once

#include <vector>
#include <ailego/internal/platform.h>
#include <ailego/utility/math_helper.h>
#include <ailego/utility/type_helper.h>
#include "distance_utility.h"
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>
#include "inner_product_matrix.h"
#include "norm2_matrix.h"

namespace zvec {
namespace ailego {
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/distance_matrix_fp16.i
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>
#include "matrix_define.i"
#include <iostream>
#if !defined(__AVX__)
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/distance_matrix_fp32.i
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>
#include "matrix_define.i"

#if !defined(__AVX__)
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/distance_matrix_int32.i
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>
#include "matrix_define.i"

#if defined(__AVX__) && defined(__GNUC__)
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/distance_matrix_int64.i
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>
#include "matrix_define.i"

#if defined(__AVX__)
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/distance_utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

#pragma once

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/math/euclidean_distance_matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@

#pragma once

#include <ailego/internal/platform.h>
#include <ailego/utility/math_helper.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>
#include "distance_utility.h"

namespace zvec {
Expand Down
2 changes: 2 additions & 0 deletions src/ailego/math/hamming_distance_matrix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
// limitations under the License.

#include "hamming_distance_matrix.h"
#include <arrow/util/future.h>
#include <zvec/ailego/internal/platform.h>
#include "distance_matrix_popcnt.i"

namespace zvec {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/math/hamming_distance_matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
#pragma once

#include <cmath>
#include <ailego/internal/platform.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>

namespace zvec {
namespace ailego {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/math/inner_product_matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
#include <cmath>
#include <string>
#include <vector>
#include <ailego/internal/platform.h>
#include <ailego/utility/math_helper.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>
#include "distance_utility.h"

namespace zvec {
Expand Down
2 changes: 1 addition & 1 deletion src/ailego/math/matrix_utility.i
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include <ailego/internal/platform.h>
#include <zvec/ailego/internal/platform.h>

namespace zvec {
namespace ailego {
Expand Down
4 changes: 2 additions & 2 deletions src/ailego/math/mips_euclidean_distance_matrix.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@

#pragma once

#include <ailego/internal/platform.h>
#include <ailego/math/norm2_matrix.h>
#include <ailego/utility/math_helper.h>
#include <ailego/utility/type_helper.h>
#include <zvec/ailego/internal/platform.h>
#include <zvec/ailego/utility/type_helper.h>
#include "distance_utility.h"

namespace zvec {
Expand Down
Loading
Loading