Types¶
Deep Lake provides a comprehensive type system designed for efficient data storage and retrieval. The type system includes basic numeric types as well as specialized types optimized for common data formats like images, embeddings, and text.
Each type can be specified either using the full type class or a string shorthand:
# Using type class
ds.add_column("col1", deeplake.types.Float32())
# Using string shorthand
ds.add_column("col2", "float32")
Types determine:¶
- How data is stored and compressed
- What operations are available
- How the data can be queried and indexed
- Integration with external libraries and frameworks
Numeric Types¶
All basic numeric types:
import deeplake
# Integers
ds.add_column("int8", deeplake.types.Int8()) # -128 to 127
ds.add_column("int16", deeplake.types.Int16()) # -32,768 to 32,767
ds.add_column("int32", deeplake.types.Int32()) # -2^31 to 2^31-1
ds.add_column("int64", deeplake.types.Int64()) # -2^63 to 2^63-1
# Unsigned Integers
ds.add_column("uint8", deeplake.types.UInt8()) # 0 to 255
ds.add_column("uint16", deeplake.types.UInt16()) # 0 to 65,535
ds.add_column("uint32", deeplake.types.UInt32()) # 0 to 2^32-1
ds.add_column("uint64", deeplake.types.UInt64()) # 0 to 2^64-1
# Floating Point
ds.add_column("float16", deeplake.types.Float16()) # Half precision
ds.add_column("float32", deeplake.types.Float32()) # Single precision
ds.add_column("float64", deeplake.types.Float64()) # Double precision
# Boolean
ds.add_column("is_valid", deeplake.types.Bool()) # True/False values
Basic Type Functions¶
deeplake.types.Int8
¶
Int8(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates an 8-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 8-bit integer data type. |
Examples:
Create a column with 8-bit integer type:
deeplake.types.Int16
¶
Int16(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 16-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 16-bit integer data type. |
Examples:
Create a column with 16-bit integer type:
deeplake.types.Int32
¶
Int32(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 32-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 32-bit integer data type. |
Examples:
Create a column with 32-bit integer type:
deeplake.types.Int64
¶
Int64(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 64-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 64-bit integer data type. |
Examples:
Create a column with 64-bit integer type:
deeplake.types.UInt8
¶
UInt8(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates an unsigned 8-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new unsigned 8-bit integer data type. |
Examples:
deeplake.types.UInt16
¶
UInt16(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates an unsigned 16-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new unsigned 16-bit integer data type. |
Examples:
deeplake.types.UInt32
¶
UInt32(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates an unsigned 32-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new unsigned 32-bit integer data type. |
Examples:
deeplake.types.UInt64
¶
UInt64(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates an unsigned 64-bit integer value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new unsigned 64-bit integer data type. |
Examples:
deeplake.types.Float16
¶
Float16(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 16-bit (half) float value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 16-bit float data type. |
Examples:
Create a column with 16-bit float type:
deeplake.types.Float32
¶
Float32(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 32-bit float value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 32-bit float data type. |
Examples:
Create a column with 32-bit float type:
deeplake.types.Float64
¶
Float64(
index_type: (
str | IndexType | NumericIndex | None
) = None,
) -> DataType | Type
Creates a 64-bit float value type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | NumericIndex | None
|
str | IndexType | NumericIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Type | Description |
|---|---|
DataType | Type
|
DataType | Type: A new 64-bit float data type. |
Examples:
Create a column with 64-bit float type:
deeplake.types.Bool
¶
deeplake.types.ClassLabel
¶
Stores categorical labels as numerical values with a mapping to class names.
ClassLabel is designed for classification tasks where you want to store labels as efficient numerical indices while maintaining human-readable class names. The class names are stored in the column's metadata under the key "class_names", and the actual data contains numerical indices pointing to these class names.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtype
|
DataType | str
|
DataType | str The datatype for storing the numerical class indices. Common choices are "uint8", "uint16", "uint32" or their DataType equivalents. Choose based on the number of classes you have. |
required |
How it works
- Define a column with ClassLabel type
- Set the "class_names" in the column's metadata as a list of strings
- Store numerical indices (0, 1, 2, ...) that map to the class names
- When reading, you can use the metadata to convert indices back to class names
Examples:
Basic usage with class labels:
# Create a column for object categories
ds.add_column("categories", types.ClassLabel(types.Array("uint32", 1)))
# Define the class names in metadata
ds["categories"].metadata["class_names"] = ["person", "car", "dog", "cat"]
# Store numerical indices corresponding to class names
# 0 = "person", 1 = "car", 2 = "dog", 3 = "cat"
ds.append({
"categories": [np.array([0, 1], dtype="uint32")] # person and car
})
ds.append({
"categories": [np.array([2, 3], dtype="uint32")] # dog and cat
})
# Access the numerical values
print(ds[0]["categories"]) # Output: [0 1]
# Get the class names from metadata
class_names = ds["categories"].metadata["class_names"]
indices = ds[0]["categories"]
labels = [class_names[i] for i in indices]
print(labels) # Output: ['person', 'car']
Advanced usage from COCO ingestion pattern:
# This example shows the pattern used in COCO dataset ingestion
# where you have multiple annotation groups
# Create dataset
ds = deeplake.create("tmp://")
# Add category columns with ClassLabel type
ds.add_column("categories", types.ClassLabel(types.Array("uint32", 1)))
ds.add_column("super_categories", types.ClassLabel(types.Array("uint32", 1)))
# Set class names from COCO categories
ds["categories"].metadata["class_names"] = [
"person", "bicycle", "car", "motorcycle", "airplane"
]
ds["super_categories"].metadata["class_names"] = [
"person", "vehicle", "animal"
]
# Ingest data with numerical indices
# Categories: [0, 2, 1] maps to ["person", "car", "bicycle"]
# Super categories: [0, 1, 1] maps to ["person", "vehicle", "vehicle"]
ds.append({
"categories": [np.array([0, 2, 1], dtype="uint32")],
"super_categories": [np.array([0, 1, 1], dtype="uint32")]
})
Using different data types for different numbers of classes:
# For datasets with fewer than 256 classes, use uint8
ds.add_column("small_set", types.ClassLabel(types.Array("uint8", 1)))
ds["small_set"].metadata["class_names"] = ["class_a", "class_b"]
# For datasets with more classes, use uint16 or uint32
ds.add_column("large_set", types.ClassLabel(types.Array("uint32", 1)))
ds["large_set"].metadata["class_names"] = [f"class_{i}" for i in range(1000)]
Numeric Indexing¶
Numeric columns support indexing for efficient comparison operations:
# Create numeric column with inverted index for range queries
ds.add_column("timestamp", deeplake.types.UInt64())
# Create the index manually
ds["timestamp"].create_index(
deeplake.types.NumericIndex(deeplake.types.Inverted)
)
# Now you can use efficient comparison operations in queries:
# - Greater than: WHERE timestamp > 1609459200
# - Less than: WHERE timestamp < 1640995200
# - Between: WHERE timestamp BETWEEN 1609459200 AND 1640995200
# - Value list: WHERE timestamp IN (1609459200, 1640995200)
deeplake.types.Audio
¶
Creates an audio data type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtype
|
DataType | str
|
DataType | str The datatype of the audio samples. Defaults to "uint8". |
'uint8'
|
sample_compression
|
str
|
str The compression format for the audio samples wav or mp3. Defaults to "mp3". |
'mp3'
|
Returns:
| Name | Type | Description |
|---|---|---|
Type |
Type
|
A new audio data type. |
Examples:
Create an audio column with default settings:
Create an audio column with specific sample compression:
# Basic audio storage
ds.add_column("audio", deeplake.types.Audio())
# WAV format
ds.add_column("audio", deeplake.types.Audio(
sample_compression="wav"
))
# MP3 compression (default)
ds.add_column("audio", deeplake.types.Audio(
sample_compression="mp3"
))
# With specific dtype
ds.add_column("audio", deeplake.types.Audio(
dtype="uint8",
sample_compression="wav"
))
# Audio with Link for external references
ds.add_column("audio_links", deeplake.types.Link(
deeplake.types.Audio(sample_compression="mp3")
))
deeplake.types.Image
¶
An image of a given format. The value returned will be a multidimensional array of values rather than the raw image bytes.
Available sample_compressions:
- png (default)
- jpg / jpeg
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtype
|
DataType | str
|
The data type of the array elements to return |
'uint8'
|
sample_compression
|
str
|
The on-disk compression/format of the image |
'png'
|
Examples:
# Basic image storage
ds.add_column("images", deeplake.types.Image())
# JPEG compression
ds.add_column("images", deeplake.types.Image(
sample_compression="jpeg"
))
# With specific dtype
ds.add_column("images", deeplake.types.Image(
dtype="uint8" # 8-bit RGB
))
deeplake.types.Embedding
¶
Embedding(
size: int | None = None,
dtype: DataType | str = "float32",
index_type: (
EmbeddingIndexType | QuantizationType | None
) = None,
) -> Type
Creates a single-dimensional embedding of a given length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
int | None
|
int | None The size of the embedding |
None
|
dtype
|
DataType | str
|
DataType | str The datatype of the embedding. Defaults to float32 |
'float32'
|
index_type
|
EmbeddingIndexType | QuantizationType | None
|
EmbeddingIndexType | QuantizationType | None
How to compress the embeddings in the index. Default uses no compression,
but can be set to :class: |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Type |
Type
|
A new embedding data type. |
See Also
:func:deeplake.types.Array for a multidimensional array.
Examples:
Create embedding columns:
# Basic embeddings
ds.add_column("embeddings", deeplake.types.Embedding(768))
# With binary quantization for faster search
ds.add_column("embeddings", deeplake.types.Embedding(
size=768,
index_type=deeplake.types.EmbeddingIndex(deeplake.types.ClusteredQuantized)
))
# Custom dtype
ds.add_column("embeddings", deeplake.types.Embedding(
size=768,
dtype="float32"
))
deeplake.types.Text
¶
Text(
index_type: str | IndexType | TextIndex | None = None,
chunk_compression: str | None = "lz4",
) -> Type
Creates a text data type of arbitrary length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | TextIndex | None
|
str | IndexType | TextIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
chunk_compression
|
str | None
|
str | None defines the compression algorithm for on-disk storage of text data. supported values are 'lz4', 'zstd', and 'null' (no compression). Default is |
'lz4'
|
Returns:
| Name | Type | Description |
|---|---|---|
Type |
Type
|
A new text data type. |
Examples:
Create text columns with different configurations:
# Basic text
ds.add_column("text", deeplake.types.Text())
# Text with BM25 index for semantic search
ds.add_column("text2", deeplake.types.Text(
index_type=deeplake.types.BM25
))
# Text with inverted index for keyword search
ds.add_column("text3", deeplake.types.Text(
index_type=deeplake.types.Inverted
))
# Text with exact index for whole text matching
ds.add_column("text4", deeplake.types.Text(
index_type=deeplake.types.Exact
))
deeplake.types.Dict
¶
Creates a type that supports storing arbitrary key/value pairs in each row.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
index_type
|
str | IndexType | JsonIndex | None
|
str | IndexType | JsonIndex | None How to index the data in the column for faster searching. Options are:
Default is |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Type |
Type
|
A new dictionary data type. |
See Also
:func:deeplake.types.Struct for a type that supports defining allowed keys.
Examples:
Create and use a dictionary column:
# Store arbitrary key/value pairs
ds.add_column("metadata", deeplake.types.Dict())
# Add data
ds.append([{
"metadata": {
"timestamp": "2024-01-01",
"source": "camera_1",
"settings": {"exposure": 1.5}
}
}])
deeplake.types.Array
¶
Creates a generic array of data.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtype
|
DataType | str
|
DataType | str The datatype of values in the array |
required |
dimensions
|
int | None
|
int | None
The number of dimensions/axes in the array. Unlike specifying |
required |
shape
|
list[int] | None
|
list[int] | None Constrain the size of each dimension in the array |
required |
Returns:
| Name | Type | Description |
|---|---|---|
DataType |
DataType
|
A new array data type with the specified parameters. |
Examples:
Create a three-dimensional array, where each dimension can have any number of elements:
Create a three-dimensional array, where each dimension has a known size:
# Fixed-size array
ds.add_column("features", deeplake.types.Array(
"float32",
shape=[512] # Enforces size
))
# Variable-size array
ds.add_column("sequences", deeplake.types.Array(
"int32",
dimensions=1 # Allows any size
))
Numeric Indexes¶
Deep Lake supports indexing numeric columns for faster lookup operations:
from deeplake.types import NumericIndex, Inverted
# Add numeric column and create an inverted index
ds.add_column("scores", "float32")
ds["scores"].create_index(NumericIndex(Inverted))
# Use with TQL for efficient filtering
results = ds.query("SELECT * WHERE CONTAINS(scores, 0.95)")
deeplake.types.Bytes
¶
Creates a byte array value type. This is useful for storing raw binary data.
Returns:
| Name | Type | Description |
|---|---|---|
DataType |
DataType
|
A new byte array data type. |
Examples:
Create columns with byte array type:
Append raw binary data to a byte array column:
deeplake.types.BinaryMask
¶
In binary mask, pixel value is a boolean for whether there is/is-not an object of a class present.
NOTE: Since binary masks often contain large amounts of data, it is recommended to compress them using lz4.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sample_compression
|
str | None
|
How to compress each row's value.
supported values are |
None
|
chunk_compression
|
str | None
|
Defines the compression algorithm for on-disk storage of mask data.
supported values are |
None
|
Examples:
# Basic binary mask
ds.add_column("masks", deeplake.types.BinaryMask())
# With compression
ds.add_column("masks", deeplake.types.BinaryMask(
sample_compression="lz4"
))
deeplake.types.SegmentMask
¶
SegmentMask(
dtype: DataType | str = "uint8",
sample_compression: str | None = None,
chunk_compression: str | None = None,
) -> Type
Segmentation masks are 2D representations of class labels where a numerical class value is encoded in an array of same shape as the image.
NOTE: Since segmentation masks often contain large amounts of data, it is recommended to compress them using lz4.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sample_compression
|
str | None
|
How to compress each row's value.
supported values are |
None
|
chunk_compression
|
str | None
|
Defines the compression algorithm for on-disk storage of mask data.
supported values are |
None
|
Examples:
# Basic segmentation mask
ds.add_column("segmentation", deeplake.types.SegmentMask())
# With compression
ds.add_column("segmentation", deeplake.types.SegmentMask(
dtype="uint8",
sample_compression="lz4"
))
deeplake.types.BoundingBox
¶
BoundingBox(
dtype: DataType | str = "float32",
format: str | None = None,
bbox_type: str | None = None,
) -> Type
Stores an array of values specifying the bounding boxes of an image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtype
|
DataType | str
|
The datatype of values (default float32) |
'float32'
|
format
|
str | None
|
The bounding box format. Possible values: |
None
|
bbox_type
|
str | None
|
The pixel type. Possible values: |
None
|
Examples:
# Basic bounding boxes
ds.add_column("boxes", deeplake.types.BoundingBox())
# With specific format
ds.add_column("boxes", deeplake.types.BoundingBox(
format="ltwh" # left, top, width, height
))
deeplake.types.Point
¶
Point datatype for storing points with ability to visualize them.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dimensions
|
int
|
The dimension of the point. For example, 2 for 2D points, 3 for 3D points, etc.: defaults to "2" |
2
|
Examples:
deeplake.types.Polygon
¶
Polygon datatype for storing polygons with ability to visualize them.
Examples:
ds.add_column("col1", deeplake.types.Polygon())
poly1 = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
poly2 = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
ds.append({"col1": [[poly1, poly2], [poly1, poly2]]})
print(ds[0]["col1"])
# Output: [[[1. 2.]
# [3. 4.]
# [5. 6.]]
# [[1. 2.]
# [3. 4.]
# [5. 6.]]]
print(ds[1]["col1"])
# Output: [[[1. 2.]
# [3. 4.]
# [5. 6.]]
# [[1. 2.]
# [3. 4.]
# [5. 6.]]]
deeplake.types.Video
¶
Video datatype for storing videos.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
compression
|
str
|
The compression format. Only H264 codec is supported at the moment. |
'mp4'
|
Examples:
deeplake.types.Medical
¶
Medical datatype for storing medical images.
Available compressions:
- nii
- nii.gz
- dcm
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
compression
|
str
|
How to compress each row's value. Possible values: |
required |
Examples:
deeplake.types.Struct
¶
Defines a custom datatype with specified keys.
See deeplake.types.Dict for a type that supports different key/value pairs per value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
fields
|
dict[str, DataType | str | Type]
|
A dict where the key is the name of the field, and the value is the datatype definition for it |
required |
Examples:
# Define fixed structure with specific types
ds.add_column("info", deeplake.types.Struct({
"id": deeplake.types.Int64(),
"name": "text",
"score": deeplake.types.Float32()
}))
# Add data
ds.append([{
"info": {
"id": 1,
"name": "sample",
"score": 0.95
}
}])
deeplake.types.Sequence
¶
Creates a sequence type that represents an ordered list of other data types.
A sequence maintains the order of its values, making it suitable for time-series data like videos (sequences of images).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
nested_type
|
DataType | str | Type
|
DataType | str | Type The data type of the values in the sequence. Can be any data type, not just primitive types. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Type |
Type
|
A new sequence data type. |
Examples:
Create a sequence of images:
# Sequence of images (e.g., video frames)
ds.add_column("frames", deeplake.types.Sequence(
deeplake.types.Image(sample_compression="jpeg")
))
# Sequence of embeddings
ds.add_column("token_embeddings", deeplake.types.Sequence(
deeplake.types.Embedding(768)
))
# Add data
ds.append([{
"frames": [frame1, frame2, frame3], # List of images
"token_embeddings": [emb1, emb2, emb3] # List of embeddings
}])
deeplake.types.Link
¶
A link to an external resource. The value returned will be a reference to the external resource rather than the raw data.
Link only supports the Bytes DataType and the Image, SegmentMask, Medical, and Audio Types.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
type
|
DataType | Type
|
The type of the linked data. Must be the Bytes DataType or one of the following Types: Image, SegmentMask, Medical, or Audio. |
required |
Examples:
Index Types¶
Deep Lake supports several index types for optimizing queries on different data types.
IndexType Enum¶
deeplake.types.IndexType
¶
Enumeration of available text/numeric/JSON/embeddings/embeddings matrix indexing types.
Attributes:
| Name | Type | Description |
|---|---|---|
Inverted |
IndexType
|
An index that supports keyword lookup. Can be used with |
BM25 |
IndexType
|
A BM25-based index of text data. Can be used with |
Exact |
IndexType
|
An exact match index for text data. |
PooledQuantized |
IndexType
|
A pooled quantized index for 2D embeddings matrices. Can be used with |
Clustered |
IndexType
|
Clusters embeddings in the index to speed up search. This is the default index type for embeddings. |
ClusteredQuantized |
IndexType
|
Stores a binary quantized representation of the original embedding in the index rather than a full copy of the embedding. This slightly decreases accuracy of searches, while significantly improving query time. |
value
property
¶
Returns:
| Name | Type | Description |
|---|---|---|
int |
int
|
The integer value of the text index type. |
Text Index Types¶
deeplake.types.TextIndex
¶
deeplake.types.Inverted
module-attribute
¶
Inverted: Inverted
A text index that supports keyword lookup.
This index can be used with CONTAINS(column, 'wanted_value').
deeplake.types.BM25
module-attribute
¶
BM25: BM25
A BM25-based index of text data.
This index can be used with BM25_SIMILARITY(column, 'search text') in a TQL ORDER BY clause.
See Also
BM25 Algorithm <https://en.wikipedia.org/wiki/Okapi_BM25>_
deeplake.types.Exact
module-attribute
¶
Exact: Exact
A text index that supports whole text lookup.
This index can be used with EQUALS(column, 'wanted_value').
Numeric Index Types¶
deeplake.types.NumericIndex
¶
JSON Index Types¶
deeplake.types.JsonIndex
¶
Embedding Index Types¶
deeplake.types.EmbeddingIndexType
¶
deeplake.types.EmbeddingIndex
¶
EmbeddingIndex(
type: IndexType | QuantizationType | None = None,
) -> EmbeddingIndexType
Creates an embedding index.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
type
|
IndexType | QuantizationType | None
|
IndexType | QuantizationType | None = None The index type for embeddings. Can be:
|
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Type |
EmbeddingIndexType
|
EmbeddingIndexType. |
Examples:
Create embedding columns with different index types:
deeplake.types.EmbeddingsMatrixIndexType
¶
Represents a 2D embeddings matrix index type.
Used for ColBERT-style maximum similarity search on 2D embedding matrices. Supports pooled quantized indexing for efficient MAXSIM queries.
deeplake.types.EmbeddingsMatrixIndex
¶
EmbeddingsMatrixIndex() -> EmbeddingsMatrixIndexType
Creates an embeddings matrix index.
Generic Index Wrapper¶
deeplake.types.Index
¶
Represents all available index types in the deeplake. This is a polymorphic wrapper that can hold any specific index type.
__init__
¶
__init__(
index_type: (
TextIndex
| EmbeddingIndexType
| EmbeddingsMatrixIndexType
| JsonIndex
| NumericIndex
),
) -> None
# Create numeric index for efficient range queries
ds.add_column("age", deeplake.types.Int32())
ds["age"].create_index(
deeplake.types.NumericIndex(deeplake.types.Inverted)
)
# Use in queries with comparison operators
results = ds.query("SELECT * WHERE age > 25")
results = ds.query("SELECT * WHERE age BETWEEN 18 AND 65")
results = ds.query("SELECT * WHERE age IN (25, 30, 35)")