Summary:
The diff implements vector index manual compaction in Vector LSM, and extends Vector LSM with
infrastructure for vector index background compactions. In accordance with the change, vector
index is being filtered out if and only if corresponding reverse mapping does not exist in
the corresponding regular db; which means the vector index is kept in the vector lsm even if
the corresponding reverse mapping entry (vector id => ybctid) is marked as tombstoned.
The command to trigger vector index manual compaction:
```
yb-admin compact_table <vector index name>
yb-admin compact_table_by_id <vector index id>
yb-ts-cli compact_vector_index <tablet_id> [<vector_index_id1> <vector_index_id12> ...]
```
The following things are not done and should be implemented in subsequent revisions:
1) revision for triggering vector index full compactions with admin full compaction.
2) revision for incorporating priority thread pool for vector index compactions.
3) revision for vector index background compactions based on size amp.
4) revision for deletion old reverse mapping (via tombstone) on a row update.
5) revision for RocksDB compactions to clean reverse mapping.
6) revision for implementing dynamic priority function for vector index compactions.
7) revision for better strategy of manifest file cleanup.
8) revision for obsolete files cleanup during startup.
Jira: DB-12964
Test Plan:
./yb_build.sh --cxx-test vector_index_vector_lsm-test --gtest_filter VectorLSMTest.SingleChunkSimpleCompaction/kHnswlib
./yb_build.sh --cxx-test vector_index_vector_lsm-test --gtest_filter VectorLSMTest.SingleChunkSimpleCompaction/kUsearch
./yb_build.sh --cxx-test vector_index_vector_lsm-test --gtest_filter VectorLSMTest.MultipleChunksSimpleCompaction/kHnswlib
./yb_build.sh --cxx-test vector_index_vector_lsm-test --gtest_filter VectorLSMTest.MultipleChunksSimpleCompaction/kUsearch
Reviewers: sergei, slingam
Reviewed By: sergei
Subscribers: ybase
Differential Revision: https://phorge.dev.yugabyte.com/D41521