DashVector menggunakan tipe data berikut untuk merepresentasikan dokumen, koleksi, dan statusnya. Halaman ini menyediakan definisi dalam Python dan Java untuk setiap tipe.
Doc
Doc merupakan satu catatan dalam koleksi DashVector. Tipe ini mengaitkan vektor dengan ID dan metadata opsional:
{
"id": "doc-001",
"vector": [0.1, 0.2, 0.3, 0.4],
"sparse_vector": {"10": 0.5, "25": 0.8},
"fields": {"category": "article", "year": 2024},
"score": 0.95
}
Python
@dataclass(frozen=True)
class Doc(object):
id: str # Kunci primary.
vector: Union[List[int], List[float], np.ndarray] # Vektor.
sparse_vector: Optional[Dict[int, float]] = None # Vektor jarang.
fields: Optional[FieldDataDict] = None # Bidang kustom dalam dokumen.
score: float = 0.0 # Kemiripan antar vektor.
Java
@Data
@Builder
public class Doc {
// Kunci primary.
@NonNull private String id;
// Vektor.
@NonNull private Vector vector;
// Vektor jarang.
private TreeMap<Integer, Float> sparseVector;
// Bidang kustom dalam dokumen.
@Builder.Default private Map<String, Object> fields = new HashMap<>();
// Kemiripan antar vektor.
private float score;
public void addField(String key, String value) {
this.fields.put(key, value);
}
public void addField(String key, Integer value) {
this.fields.put(key, value);
}
public void addField(String key, Float value) {
this.fields.put(key, value);
}
public void addField(String key, Boolean value) {
this.fields.put(key, value);
}
}
Referensi bidang
| Bidang | Tipe (Python) | Tipe (Java) | Deskripsi |
|---|
id | str | String | Kunci primary yang secara unik mengidentifikasi dokumen. |
vector | Union[List[int], List[float], np.ndarray] | Vector | Vektor padat. |
sparse_vector | Optional[Dict[int, float]] | TreeMap<Integer, Float> | Vektor jarang. |
fields | Optional[FieldDataDict] | Map<String, Object> | Pasangan kunci-nilai kustom untuk penyaringan metadata. |
score | float (default: 0.0) | float | Kemiripan antar vektor. |
Tipe data bidang yang didukung
| Tipe | Python | Java |
|---|
| String | str | String |
| Integer | int | Integer |
| Float | float | Float |
| Boolean | bool | Boolean |
CollectionMeta
CollectionMeta menjelaskan konfigurasi koleksi: nama, dimensi vektor, metrik jarak, skema bidang, dan tata letak partisi.
Python
@dataclass(frozen=True)
class CollectionMeta(object):
name: str # Nama koleksi.
dimension: int # Jumlah dimensi vektor.
dtype: str # Tipe data vektor. Nilai valid: float dan int.
metric: str # Metrik jarak. Nilai valid: euclidean, dotproduct, dan cosine.
status: Status # Status koleksi.
fields: Dict[str, str] # Bidang dalam koleksi. Tipe data bidang yang didukung: float, bool, int, dan str.
partitions: Dict[str, Status] # Informasi tentang partisi dalam koleksi.
Java
@Getter
public class CollectionMeta {
// Nama koleksi.
private final String name;
// Jumlah dimensi vektor.
private final int dimension;
// Tipe data vektor. Nilai valid: float dan int.
private final CollectionInfo.DataType dataType;
// Metrik jarak. Nilai valid: euclidean, dotproduct, dan cosine.
private final CollectionInfo.Metric metric;
// Status koleksi.
private final String status;
// Bidang dalam koleksi. Tipe data bidang yang didukung: float, bool, int, dan str.
private final Map<String, FieldType> fieldsSchema;
// Informasi tentang partisi dalam koleksi.
private final Map<String, Status> partitionStatus;
public CollectionMeta(CollectionInfo collectionInfo) {
this.name = collectionInfo.getName();
this.dimension = collectionInfo.getDimension();
this.dataType = collectionInfo.getDtype();
this.metric = collectionInfo.getMetric();
this.status = collectionInfo.getStatus().name();
this.fieldsSchema = collectionInfo.getFieldsSchemaMap();
this.partitionStatus = collectionInfo.getPartitionsMap();
}
}
Referensi bidang
| Bidang | Tipe (Python) | Tipe (Java) | Deskripsi |
|---|
name | str | String | Nama koleksi. |
dimension | int | int | Jumlah dimensi vektor. |
dtype | str | CollectionInfo.DataType | Tipe data vektor dalam koleksi. Nilai valid: float, int. |
metric | str | CollectionInfo.Metric | Metrik jarak untuk pencarian kemiripan. Nilai valid: euclidean, dotproduct, cosine. |
status | Status | String | Status saat ini dari koleksi. Lihat Status. |
fields | Dict[str, str] | Map<String, FieldType> | Skema bidang kustom yang didefinisikan untuk koleksi. Tipe data yang didukung: float, bool, int, str. |
partitions | Dict[str, Status] | Map<String, Status> | Pemetaan nama partisi ke statusnya saat ini. |
Metrik jarak
| Metrik | Nilai API |
|---|
| Jarak Euclidean | euclidean |
| Dot product | dotproduct |
| Kemiripan Cosine | cosine |
Tipe data vektor
| Tipe data | Nilai API |
|---|
| Float | float |
| Integer | int |
CollectionStats
CollectionStats melaporkan jumlah dokumen dan progres pembuatan indeks suatu koleksi.
Python
@dataclass(frozen=True)
class CollectionStats(object):
total_doc_count: int # Total jumlah dokumen yang dimasukkan ke dalam koleksi.
index_completeness: float # Kelengkapan penyisipan data ke dalam koleksi.
partitions: Dict[str, PartitionStats] # Informasi tentang partisi dalam koleksi.
Java
@Getter
public class CollectionStats {
// Total jumlah dokumen yang dimasukkan ke dalam koleksi.
private final long totalDocCount;
// Kelengkapan penyisipan data ke dalam koleksi.
private final float indexCompleteness;
// Informasi tentang partisi dalam koleksi.
private final Map<String, PartitionStats> partitions;
public CollectionStats(StatsCollectionResponse.CollectionStats collectionStats) {
this.totalDocCount = collectionStats.getTotalDocCount();
this.indexCompleteness = collectionStats.getIndexCompleteness();
this.partitions = new HashMap<>();
collectionStats
.getPartitionsMap()
.forEach((key, value) -> this.partitions.put(key, new PartitionStats(value)));
}
}
Referensi bidang
| Bidang | Tipe (Python) | Tipe (Java) | Deskripsi |
|---|
total_doc_count | int | long | Total jumlah dokumen yang dimasukkan ke dalam koleksi. |
index_completeness | float | float | Kelengkapan penyisipan data ke dalam koleksi. |
partitions | Dict[str, PartitionStats] | Map<String, PartitionStats> | Pemetaan nama partisi ke statistiknya. Lihat PartitionStats. |
PartitionStats
PartitionStats melaporkan jumlah dokumen untuk satu partisi dalam koleksi.
Python
@dataclass(frozen=True)
class PartitionStats(object):
total_doc_count: int # Total jumlah dokumen dalam partisi.
Java
@Getter
public class PartitionStats {
// Total jumlah dokumen dalam partisi.
private final long totalDocCount;
public PartitionStats(com.aliyun.dashvector.proto.PartitionStats partitionStats) {
this.totalDocCount = partitionStats.getTotalDocCount();
}
}
Referensi bidang
| Bidang | Tipe (Python) | Tipe (Java) | Deskripsi |
|---|
total_doc_count | int | long | Total jumlah dokumen dalam partisi. |
Status
Enum Status mendefinisikan status siklus hidup koleksi atau partisi.
class Status(IntEnum):
INITIALIZED = 0 # Koleksi atau partisi sedang dibuat.
SERVING = 1 # Koleksi atau partisi dalam layanan.
DROPPING = 2 # Koleksi atau partisi sedang dihapus.
ERROR = 3 # Koleksi atau partisi mengalami anomali.
| Nilai | Integer | Deskripsi |
|---|
INITIALIZED | 0 | Koleksi atau partisi sedang dibuat. |
SERVING | 1 | Koleksi atau partisi dalam layanan. |
DROPPING | 2 | Koleksi atau partisi sedang dihapus. |
ERROR | 3 | Koleksi atau partisi mengalami error. |
Alias tipe (Python)
SDK Python mendefinisikan alias tipe berikut:
long = NewType("long", int)
FieldDataType = Union[long, str, int, float, bool]
FieldDataDict = Dict[str, FieldDataType]
VectorValueType = Union[List[int], List[float], np.ndarray]
| Alias | Definisi | Deskripsi |
|---|
long | NewType("long", int) | Tipe integer yang diperluas. |
FieldDataType | Union[long, str, int, float, bool] | Tipe nilai yang diterima untuk bidang dokumen kustom. |
FieldDataDict | Dict[str, FieldDataType] | Tipe parameter fields dalam Doc. |
VectorValueType | Union[List[int], List[float], np.ndarray] | Tipe yang diterima untuk parameter vector dalam Doc. |