Row 操作
更新时间:2024-09-20
插入记录
功能介绍
将一条或者一批记录插入到指定的表中。插入语义为Insert,若记录的主键已存在,则插入失败并报错。当插入一批时,该接口暂不支持批次的原子性。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.table import Row
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
rows = [
Row(id='0001',
vector=[0.2123, 0.21, 0.213],
bookName='西游记'),
]
table.insert(rows)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
rows | List<Row> | 是 | 插入的记录列表。 |
插入或更新记录
功能介绍
将一条或者一批记录插入到指定的表中。插入语义为Upsert(Insert or else Update),即,当记录的主键不存在时,则正常插入,若发现主键已存在,则用新的记录覆盖旧的记录。当插入一批时,该接口暂不支持批次的原子性。该接口可用于批量迁移/灌库等场景。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.table import Row
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
rows = [
Row(id='0001',
vector=[0.2123, 0.21, 0.213],
bookName='西游记'),
]
table.upsert(rows)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
rows | List<Row> | 是 | 待插入记录列表。 |
更新记录
功能介绍
更新表中指定记录的一个或多个标量字段的值
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
primary_key = {'id': '0001'}
update_fields = {'bookName': '红楼梦'}
table.update(primary_key=primary_key, update_fields=update_fields)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
primary_key | Json | 是 | 指定记录的主键值。 |
partition_key | Json | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。只有在有主键值的情况下,分区键值才会生效。 |
update_fields | Json | 是 | 待更新的字段列表及其新值。 不允许更新主键、分区键和向量字段。 |
删除记录
功能介绍
删除表中的指定记录。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
primary_key = {'id': '0001'}
table.delete(primary_key) # 基于主键的查询删除
table.delete(filter="id=='0001'") # 基于标量字段的过滤删除
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
primary_key | Json | 否 | 指定记录的主键值。 |
partition_key | Json | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。只有在有主键值的情况下,分区键值才会生效。 |
filter | String | 否 | 删除的标量过滤条件。 当要删除全部记录,可设置为"*";Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。必须填写主键值或过滤条件,二者有且仅能选其一。 |
标量查询
功能介绍
基于主键值进行点查。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
primary_key = {'id': '0001'}
projections = ["id", "bookName"]
res = table.query(primary_key=primary_key, projections=projections)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
primary_key | Json | 是 | 指定记录的主键值。 |
partition_key | Json | 否 | 指定记录的分区键值。 如果该表的分区键和主键是同一个键,则不需要填写分区键值。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
retrieve_vector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False。 |
read_consistency | ReadConsistency | 否 | 查询请求的一致性级别,取值为: |
向量检索与混合检索
功能介绍
基于向量字段值的KNN或ANN检索操作,支持通过标量字段值进行过滤。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.table import AnnSearch, HNSWSearchParams
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
anns = AnnSearch(vector_field="vector", vector_floats=[0.3123, 0.43, 0.213],
params=HNSWSearchParams(ef=200, limit=10), filter="bookName='三国演义'")
res = table.search(anns=anns)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
anns | AnnSearch | 是 | 检索请求参数详情。 |
partition_key | Json | 否 | 目标记录的分区键值,如果该表的分区键和主键是同一个键,则不需要填写分区键值。 需要注意的是,如果没有指定分区键值,那么该检索请求可能会退化为在该表所有分片上都执行的MPP检索。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时检索结果返回所有标量字段。 |
retrieve_vector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False。 |
read_consistency | ReadConsistency | 否 | 检索请求的一致性级别,取值为: |
AnnSearch参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
vector_field | String | 是 | 检索的指定向量字段名称。 |
vector_floats | FloatVector | 是 | 检索的目标向量字段值。 |
params | AnnSearchParam | 是 | 检索算法的参数详情。 |
filter | String | 否 | 检索的标量过滤条件,表示仅在符合过滤条件的候选集中进行检索,默认为空。Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。 |
AnnSearcParams
HNSWSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | Int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
distance_far | Float | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
distance_near | Float | 否 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。 取值约束同上。 |
PUCKSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
searchCoarseCount | Int | 是 | PUCK算法检索过程粗聚类中心候选集大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
HNSWPQSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | Int | 是 | HNSWPQ算法检索过程的动态候选列表的大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
distance_far | Float | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
distance_near | Float | 否 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。 取值约束同上。 |
标量过滤查询
功能介绍
基于标量属性过滤查询记录。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.enum import ReadConsistency
account = 'root'
api_key = 'your_api_key'
endpoint = 'you_endpoint' #example http://127.0.0.1:8511
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
projections = ["id", "bookName"]
marker = {'id': 50}
filter = 'id < 100'
table.select(filter=filter, marker=marker, projections=projections, read_consistency=ReadConsistency.EVENTUAL, limit=10)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
filter | String | 否 | 检索的标量过滤条件,表示仅在符合过滤条件的候选集中进行检索,默认为空。Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。 |
marker | Json | 否 | 查询的分页起始点,用于控制分页查询返回结果的起始位置,方便用户对数据进行分页展示和浏览,用户不填时,默认从第一条符合条件的记录开始返回。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时查询结果默认返回所有标量字段。 |
read_consistency | String | 否 | 查询请求的一致性级别,取值为: |
limit | Int | 否 | 查询返回的记录条数,在进行分页查询时,即每页的记录条数。 默认为10,取值范围[1, 1000]。 |
批量向量检索与混合检索
功能介绍
基于多个向量字段值的KNN或ANN检索操作,支持通过标量字段值进行过滤。仅适用于多节点标准版,单节点免费测试版不支持 batch_search,请使用 search 接口。
请求示例
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
from pymochow.model.table import AnnSearch, HNSWSearchParams
account = 'root'
api_key = '$您的账户API密钥'
endpoint = '$您的实例访问端点' # 例如:'http://127.0.0.1:5287'
config = Configuration(credentials=BceCredentials(account, api_key),
endpoint=endpoint)
client = pymochow.MochowClient(config)
db = client.database("db_test")
table = db.table("book_vector")
anns = AnnSearch(vector_field="vector", vector_floats=[[0.3123, 0.43, 0.213],[0.21, 0.23, 0.421]],
params=HNSWSearchParams(ef=200, limit=10), filter="bookName='三国演义'")
# batch_search 仅适用于多节点标准版,单节点免费测试版不支持 batch_search,请使用 search 接口。
res = table.batch_search(anns=anns)
client.close()
请求参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
anns | AnnSearch | 是 | 检索请求参数详情。 |
partition_key | Json | 否 | 目标记录的分区键值,如果该表的分区键和主键是同一个键,则不需要填写分区键值。 需要注意的是,如果没有指定分区键值,那么该检索请求可能会退化为在该表所有分片上都执行的MPP检索。 |
projections | List<String> | 否 | 投影字段列表,默认为空,为空时检索结果返回所有标量字段。 |
retrieve_vector | Boolean | 否 | 是否返回结果记录中的向量字段值,默认为False。 |
read_consistency | ReadConsistency | 否 | 检索请求的一致性级别,取值为: |
AnnSearch参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
vector_field | String | 是 | 检索的指定向量字段名称。 |
vector_floats | List FloatVector | 是 | 批量检索的多个目标向量字段值。 |
params | AnnSearchParam | 是 | 检索算法的参数详情。 |
filter | String | 否 | 检索的标量过滤条件,表示仅在符合过滤条件的候选集中进行检索,默认为空。Filter表达式语法参照SQL的WHERE子句语法进行设计,其详细描述和使用示例请参见Filter条件表达式。 |
AnnSearcParams
HNSWSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | Int | 是 | HNSW算法检索过程的动态候选列表的大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
distance_far | Float | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
distance_near | Float | 否 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。 取值约束同上。 |
PUCKSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
searchCoarseCount | Int | 是 | PUCK算法检索过程粗聚类中心候选集大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
HNSWPQSearchParams参数
参数 | 参数类型 | 是否必选 | 参数含义 |
---|---|---|---|
ef | Int | 是 | HNSWPQ算法检索过程的动态候选列表的大小。 |
limit | Int | 否 | 返回最接近目标向量的向量记录数量,相当于TopK的K值,默认为50。 |
distance_far | Float | 否 | 范围检索场景中的最远距离,表示仅检索候选集中与目标向量的距离小于该值的向量。取值约束如下: |
distance_near | Float | 否 | 范围检索场景中的最近距离,表示仅检索候选集中与目标向量的距离大于该值的向量。 取值约束同上。 |