ZVec.NET Native API Coverage Report¶
Generated against c_api.h @ alibaba/zvec v0.6.0 and NativeMethods.cs (ZVec.NET 1.0.0-beta.5).
Regenerate after each submodule bump by comparing ZVEC_EXPORT / ZVEC_CALL names in c_api.h to [LibraryImport] methods in NativeMethods.cs.
Summary¶
| Metric | Count |
|---|---|
c_api.h ZVEC_EXPORT zvec_* |
354 |
NativeMethods [LibraryImport] |
173 |
| Name overlap | 173 |
| Coverage (overlap / c_api) | ~48.9% |
| Orphans (in C#, not in header) | 0 |
| Missing (in header, not in C#) | 181 |
Open schema binding: ZVecFactory.Open / OpenAsync call zvec_collection_get_schema and marshal via NativeSchemaMarshaller. Covered by OpenSchemaBindingIntegrationTests.
Blocker — HNSW-RaBitQ index create (C API gap)¶
ZVEC_INDEX_TYPE_HNSW_RABITQ is defined, but zvec_index_params_create has no matching case (falls through to Flat). There are no set_hnsw_rabitq_* exports; set_hnsw_params only accepts HnswIndexParams. Managed ZVecHnswRabitqIndexParam throws NotSupportedException before calling create. Python uses the C++ binding path.
Blocker — group-by execution (C API gap, not “Python-only mystery”)¶
Upstream does execute group-by end-to-end in Python:
python/zvec/model/collection.py→group_by_query(...)- Builds a C++
GroupByVectorQuery(_GroupByVectorQuery) - Calls pybind
Collection.GroupByQueryinpython_collection.cc - That releases the GIL and invokes C++
zvec::Collection::GroupByQuery/CollectionImpl::GroupByQuery
ZVec.NET loads the official C API (zvec_c_api). That surface has:
| Layer | Status |
|---|---|
zvec_group_by_vector_query_* builders |
Present; bound via NativeGroupByQueryBuilder |
zvec_collection_query / zvec_collection_multi_query |
Present; used for vector / multi |
zvec_collection_group_by_query (or any collection DQL taking a group-by query) |
Absent from c_api.h |
So QueryGroupBy stays NotSupportedException until upstream exports a C entry point mirroring the pybind path (or we add a non-official C++ bridge — out of scope for the official-DLL binding).
Orphans (must be empty after fixes)¶
None.
Signature policy¶
Every remaining [LibraryImport] must match c_api.h (name + parameter shape). No critical/non-critical tiers.
Bound symbols (173)¶
zvec_check_versionzvec_collection_add_columnzvec_collection_alter_columnzvec_collection_closezvec_collection_create_and_openzvec_collection_create_indexzvec_collection_deletezvec_collection_delete_by_filterzvec_collection_delete_with_resultszvec_collection_destroyzvec_collection_drop_columnzvec_collection_drop_indexzvec_collection_fetchzvec_collection_get_schemazvec_collection_get_statszvec_collection_insertzvec_collection_insert_with_resultszvec_collection_multi_queryzvec_collection_openzvec_collection_optimizezvec_collection_options_createzvec_collection_options_set_enable_mmapzvec_collection_options_set_read_onlyzvec_collection_queryzvec_collection_schema_add_fieldzvec_collection_schema_createzvec_collection_schema_destroyzvec_collection_schema_get_forward_fieldszvec_collection_schema_get_max_doc_count_per_segmentzvec_collection_schema_get_namezvec_collection_schema_get_vector_fieldszvec_collection_stats_destroyzvec_collection_stats_get_doc_countzvec_collection_stats_get_index_completenesszvec_collection_stats_get_index_countzvec_collection_stats_get_index_namezvec_collection_updatezvec_collection_update_with_resultszvec_collection_upsertzvec_collection_upsert_with_resultszvec_config_data_createzvec_config_data_destroyzvec_config_data_set_log_configzvec_config_data_set_memory_limitzvec_config_data_set_query_thread_countzvec_config_log_create_consolezvec_config_log_create_filezvec_config_log_destroyzvec_doc_add_field_by_valuezvec_doc_createzvec_doc_destroyzvec_doc_get_field_nameszvec_doc_get_field_value_copyzvec_doc_get_field_value_pointerzvec_doc_get_pk_copyzvec_doc_get_scorezvec_doc_set_pkzvec_doc_set_scorezvec_docs_freezvec_field_schema_createzvec_field_schema_destroyzvec_field_schema_get_data_typezvec_field_schema_get_dimensionzvec_field_schema_get_namezvec_field_schema_is_nullablezvec_field_schema_set_index_paramszvec_freezvec_free_str_arrayzvec_fts_createzvec_fts_destroyzvec_fts_set_match_stringzvec_fts_set_query_stringzvec_get_last_errorzvec_get_last_error_detailszvec_get_versionzvec_get_version_majorzvec_group_by_vector_query_createzvec_group_by_vector_query_destroyzvec_group_by_vector_query_set_diskann_paramszvec_group_by_vector_query_set_field_namezvec_group_by_vector_query_set_filterzvec_group_by_vector_query_set_flat_paramszvec_group_by_vector_query_set_group_by_field_namezvec_group_by_vector_query_set_group_countzvec_group_by_vector_query_set_hnsw_paramszvec_group_by_vector_query_set_include_vectorzvec_group_by_vector_query_set_ivf_paramszvec_group_by_vector_query_set_query_vectorzvec_group_by_vector_query_set_topk_per_groupzvec_group_by_vector_query_set_vamana_paramszvec_index_params_createzvec_index_params_destroyzvec_index_params_set_diskann_paramszvec_index_params_set_fts_paramszvec_index_params_set_hnsw_paramszvec_index_params_set_invert_paramszvec_index_params_set_ivf_paramszvec_index_params_set_metric_typezvec_index_params_set_quantize_typezvec_index_params_set_quantizer_enable_rotatezvec_index_params_set_vamana_paramszvec_initializezvec_multi_query_add_sub_queryzvec_multi_query_createzvec_multi_query_destroyzvec_multi_query_set_filterzvec_multi_query_set_rerank_rrfzvec_multi_query_set_rerank_weightedzvec_multi_query_set_topkzvec_query_params_diskann_createzvec_query_params_diskann_destroyzvec_query_params_diskann_set_is_linearzvec_query_params_diskann_set_is_using_refinerzvec_query_params_diskann_set_list_sizezvec_query_params_diskann_set_radiuszvec_query_params_flat_createzvec_query_params_flat_destroyzvec_query_params_flat_set_is_linearzvec_query_params_flat_set_is_using_refinerzvec_query_params_flat_set_radiuszvec_query_params_flat_set_scale_factorzvec_query_params_fts_createzvec_query_params_fts_destroyzvec_query_params_hnsw_createzvec_query_params_hnsw_destroyzvec_query_params_hnsw_set_efzvec_query_params_hnsw_set_is_linearzvec_query_params_hnsw_set_is_using_refinerzvec_query_params_hnsw_set_radiuszvec_query_params_ivf_createzvec_query_params_ivf_destroyzvec_query_params_ivf_set_is_linearzvec_query_params_ivf_set_is_using_refinerzvec_query_params_ivf_set_nprobezvec_query_params_ivf_set_radiuszvec_query_params_ivf_set_scale_factorzvec_query_params_vamana_createzvec_query_params_vamana_destroyzvec_query_params_vamana_set_ef_searchzvec_query_params_vamana_set_is_linearzvec_query_params_vamana_set_is_using_refinerzvec_query_params_vamana_set_radiuszvec_shutdownzvec_string_array_addzvec_string_array_createzvec_string_array_destroyzvec_sub_query_createzvec_sub_query_destroyzvec_sub_query_set_diskann_paramszvec_sub_query_set_field_namezvec_sub_query_set_flat_paramszvec_sub_query_set_ftszvec_sub_query_set_fts_paramszvec_sub_query_set_hnsw_paramszvec_sub_query_set_ivf_paramszvec_sub_query_set_query_vectorzvec_sub_query_set_sparse_vectorzvec_sub_query_set_vamana_paramszvec_vector_query_createzvec_vector_query_destroyzvec_vector_query_set_diskann_paramszvec_vector_query_set_field_namezvec_vector_query_set_filterzvec_vector_query_set_flat_paramszvec_vector_query_set_ftszvec_vector_query_set_fts_paramszvec_vector_query_set_hnsw_paramszvec_vector_query_set_include_vectorzvec_vector_query_set_ivf_paramszvec_vector_query_set_query_vectorzvec_vector_query_set_topkzvec_vector_query_set_vamana_paramszvec_write_results_free
Missing symbols by category (181)¶
collection (3)¶
- zvec_collection_flush
- zvec_collection_options_destroy
- zvec_collection_options_set_max_buffer_size
config (11)¶
- zvec_config_data_set_brute_force_by_keys_ratio
- zvec_config_data_set_fts_brute_force_by_keys_ratio
- zvec_config_data_set_invert_to_forward_scan_ratio
- zvec_config_data_set_jieba_dict_dir
- zvec_config_data_set_optimize_thread_count
- zvec_config_log_is_file_type
- zvec_config_log_set_basename
- zvec_config_log_set_dir
- zvec_config_log_set_file_size
- zvec_config_log_set_level
- zvec_config_log_set_overdue_days
getters (68)¶
- zvec_collection_get_options
- zvec_collection_options_get_enable_mmap
- zvec_collection_options_get_max_buffer_size
- zvec_collection_options_get_read_only
- zvec_collection_schema_get_all_field_names
- zvec_collection_schema_get_field
- zvec_collection_schema_get_forward_field
- zvec_collection_schema_get_forward_field_names
- zvec_collection_schema_get_forward_field_names_with_index
- zvec_collection_schema_get_forward_fields_with_index
- zvec_collection_schema_get_vector_field
- zvec_config_data_get_brute_force_by_keys_ratio
- zvec_config_data_get_fts_brute_force_by_keys_ratio
- zvec_config_data_get_invert_to_forward_scan_ratio
- zvec_config_data_get_jieba_dict_dir
- zvec_config_data_get_log_type
- zvec_config_data_get_memory_limit
- zvec_config_data_get_optimize_thread_count
- zvec_config_data_get_query_thread_count
- zvec_config_log_get_basename
- zvec_config_log_get_dir
- zvec_config_log_get_file_size
- zvec_config_log_get_level
- zvec_config_log_get_overdue_days
- zvec_doc_get_doc_id
- zvec_doc_get_field_count
- zvec_doc_get_field_value_basic
- zvec_doc_get_operator
- zvec_doc_get_pk_pointer
- zvec_field_schema_get_element_data_size
- zvec_field_schema_get_element_data_type
- zvec_field_schema_get_index_params
- zvec_field_schema_get_index_type
- zvec_fts_get_match_string
- zvec_fts_get_query_string
- zvec_get_default_jieba_dict_dir
- zvec_get_io_backend_description
- zvec_get_io_backend_type
- zvec_get_io_backend_type_name
- zvec_get_version_minor
- zvec_get_version_patch
- zvec_index_params_get_diskann_list_size
- zvec_index_params_get_diskann_max_degree
- zvec_index_params_get_diskann_pq_chunk_num
- zvec_index_params_get_fts_params
- zvec_index_params_get_hnsw_ef_construction
- zvec_index_params_get_hnsw_m
- zvec_index_params_get_invert_params
- zvec_index_params_get_ivf_params
- zvec_index_params_get_metric_type
- zvec_index_params_get_quantize_type
- zvec_index_params_get_quantizer_enable_rotate
- zvec_index_params_get_type
- zvec_index_params_get_vamana_params
- zvec_multi_query_get_filter
- zvec_multi_query_get_include_vector
- zvec_multi_query_get_output_fields
- zvec_multi_query_get_sub_query_count
- zvec_multi_query_get_topk
- zvec_sub_query_get_field_name
- zvec_sub_query_get_num_candidates
- zvec_vector_query_get_field_name
- zvec_vector_query_get_filter
- zvec_vector_query_get_fts
- zvec_vector_query_get_include_doc_id
- zvec_vector_query_get_include_vector
- zvec_vector_query_get_output_fields
- zvec_vector_query_get_topk
group_by (9)¶
- zvec_group_by_vector_query_get_field_name
- zvec_group_by_vector_query_get_filter
- zvec_group_by_vector_query_get_group_by_field_name
- zvec_group_by_vector_query_get_group_count
- zvec_group_by_vector_query_get_include_vector
- zvec_group_by_vector_query_get_output_fields
- zvec_group_by_vector_query_get_topk_per_group
- zvec_group_by_vector_query_set_output_fields
- zvec_group_by_vector_query_set_query_params
helpers (20)¶
- zvec_bin_create
- zvec_byte_array_create
- zvec_byte_array_destroy
- zvec_data_type_to_string
- zvec_doc_to_detail_string
- zvec_error_code_to_string
- zvec_float_array_create
- zvec_float_array_destroy
- zvec_free_string
- zvec_free_uint8_array
- zvec_index_type_to_string
- zvec_int64_array_create
- zvec_int64_array_destroy
- zvec_metric_type_to_string
- zvec_string_c_str
- zvec_string_compare
- zvec_string_copy
- zvec_string_create
- zvec_string_create_from_view
- zvec_string_length
other (25)¶
- zvec_clear_error
- zvec_doc_add_field_by_struct
- zvec_doc_clear
- zvec_doc_deserialize
- zvec_doc_has_field
- zvec_doc_has_field_value
- zvec_doc_is_empty
- zvec_doc_is_field_null
- zvec_doc_memory_usage
- zvec_doc_merge
- zvec_doc_remove_field
- zvec_doc_serialize
- zvec_doc_set_doc_id
- zvec_doc_set_field_null
- zvec_doc_set_operator
- zvec_is_initialized
- zvec_malloc
- zvec_multi_query_set_include_vector
- zvec_multi_query_set_output_fields
- zvec_set_default_jieba_dict_dir
- zvec_sub_query_set_num_candidates
- zvec_sub_query_set_sparse_indices
- zvec_sub_query_set_sparse_values
- zvec_vector_query_set_include_doc_id
- zvec_vector_query_set_output_fields
query_params (24)¶
- zvec_query_params_diskann_get_is_linear
- zvec_query_params_diskann_get_is_using_refiner
- zvec_query_params_diskann_get_list_size
- zvec_query_params_diskann_get_radius
- zvec_query_params_flat_get_is_linear
- zvec_query_params_flat_get_is_using_refiner
- zvec_query_params_flat_get_radius
- zvec_query_params_flat_get_scale_factor
- zvec_query_params_fts_get_default_operator
- zvec_query_params_fts_set_default_operator
- zvec_query_params_hnsw_get_ef
- zvec_query_params_hnsw_get_is_linear
- zvec_query_params_hnsw_get_is_using_refiner
- zvec_query_params_hnsw_get_radius
- zvec_query_params_ivf_get_is_linear
- zvec_query_params_ivf_get_is_using_refiner
- zvec_query_params_ivf_get_nprobe
- zvec_query_params_ivf_get_radius
- zvec_query_params_ivf_get_scale_factor
- zvec_query_params_vamana_get_ef_search
- zvec_query_params_vamana_get_is_linear
- zvec_query_params_vamana_get_is_using_refiner
- zvec_query_params_vamana_get_radius
- zvec_vector_query_set_query_params
schema (21)¶
- zvec_collection_schema_add_index
- zvec_collection_schema_alter_field
- zvec_collection_schema_drop_field
- zvec_collection_schema_drop_index
- zvec_collection_schema_has_field
- zvec_collection_schema_has_index
- zvec_collection_schema_set_max_doc_count_per_segment
- zvec_collection_schema_set_name
- zvec_collection_schema_validate
- zvec_field_schema_has_index
- zvec_field_schema_has_invert_index
- zvec_field_schema_is_array_type
- zvec_field_schema_is_dense_vector
- zvec_field_schema_is_sparse_vector
- zvec_field_schema_is_vector_field
- zvec_field_schema_set_data_type
- zvec_field_schema_set_dimension
- zvec_field_schema_set_name
- zvec_field_schema_set_nullable
- zvec_field_schema_validate
- zvec_free_field_schema
Caller → test matrix¶
| Production path | Native symbols (representative) | Test coverage |
|---|---|---|
| Version gate | zvec_check_version, zvec_get_version* |
VersionGate + V060ApiIntegrationTests |
| Index params + EnableRotate | Flat/Hnsw/Ivf/Vamana/DiskANN + rotate | NativeBuildersIntegrationTests / V060ApiIntegrationTests |
| Query params applicator (all types × Vector/Sub/GroupBy) | zvec_query_params_* + set_*_params |
NativeBuildersIntegrationTests |
| NativeQueryBuilder | vector query + FTS + params | NativeBuildersIntegrationTests + query suites |
| NativeMultiQueryBuilder | multi + per-sub QueryParams | NativeBuildersIntegrationTests |
| NativeGroupByQueryBuilder | zvec_group_by_vector_query_* |
NativeBuildersIntegrationTests (create/wire; no execute) |
| FTS stemmer/ascii_folding + reopen | FTS params + query | V060ApiIntegrationTests / FtsIntegrationTests |
| DiskANN index | Linux-only | NativeCallerCoverage (Skip off-Linux) |
Functional native coverage: production-called symbols hit by ≥1 real-DLL path on win-x64 where applicable; DiskANN remains Linux-gated.