一、导入 SDK 依赖模块
PythonJavaGoimport tcvectordbfrom tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistencyfrom tcvectordb.model.index import Index, VectorIndex, FilterIndex, HNSWParamsfrom tcvectordb.model.collection import UpdateQueryfrom tcvectordb.model.document import Document, SearchParams, Filterimport com.tencent.tcvectordb.client.RPCVectorDBClient;import com.tencent.tcvectordb.model.*;package mainimport ( "context" "log" "time" "github.com/tencent/vectordatabase-sdk-go/tcvectordb")
二、创建 Client
导入 SDK 所需的模块之后,需先创建一个向量数据库的客户端对象,与向量数据库服务器连接才能进行交互。
注意:说明:
注意:如下示例 url 与 key 需要分别替换为已购买的默认版实例的 外网访问地址 与 API Key。请登录 向量数据库控制台,在实例详情页面网络信息区域直接复制外网地址,在密钥管理页面直接复制密钥。
PythonJavaGoclient = tcvectordb.RPCVectorDBClient(url='http://10.0.X.X', username='root', key='eC4bLRy2va******************************', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)public class VectorDBExample { public static void main(String[] args) { // 创建VectorDB Client ConnectParam connectParam = ConnectParam.newBuilder() .withUrl("http://10.0.X.X:80") .withUsername("root") .withKey("eC4bLRy2va******************************") .withTimeout(30) .build(); VectorDBClient client = new RPCVectorDBClient(connectParam, ReadConsistencyEnum.EVENTUAL_CONSISTENCY); } }func main() { var defaultOption = &tcvectordb.ClientOption{ Timeout: time.Second * 5, MaxIdldConnPerHost: 2, IdleConnTimeout: time.Minute, ReadConsistency: tcvectordb.EventualConsistency, } client, err := tcvectordb.NewRpcClient("http://10.0.X.X:80", "root", "eC4bLRy2va******************************", defaultOption) if err != nil { panic(err) }}
三、创建数据库
基于创建的客户端对象,创建数据库。
PythonJavaGoCurlPython SDK 通过 create_database() 接口创建数据库 db-test。db = client.create_database(database_name='db-test')Java SDK 通过 createDatabase() 创建数据库 db-test。 Database db = client.createDatabase("db-test");Go SDK 通过 CreateDatabase() 创建数据库 db-test。var ( ctx = context.Background() database = "db-test")db, _ := client.CreateDatabase(ctx, database)HTTP 使用 /database/create 接口创建数据库 db_test。如下示例,url 地址与 api_key 需要分别替换为已购买实例的外网地址与 API Key。curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\http://10.0.X.X:80/database/create \\ -d '{ "database": "db-test"}'
四、创建集合
1. 创建集合之前,需先设计索引结构,指定索引字段。如下示例,创建一个可写入3维向量数据存储书籍的集合 book-vector,其书籍信息字段包括: id、vector、bookName,分别对各字段构建索引。有关索引的具体信息,请参见 Index。
·主键索引(Primary Key Index):固定且必须,对应字段 id,每条数据的唯一标识。并对主键 id 构建 Filter 索引,以便可通过 id 的条件表达式进行特定行的检索。
·向量索引(Vector Index):固定且必须,对应字段 vector,对向量数据构建索引,指定向量数据的维度、数据存储的索引类型、相似性计算方法及相关索引参数。
·Filter 索引(Filter Index):需根据检索需求选取可作为条件查询过滤数据的字段。通常,向量数据对应的文本字段,不具有过滤属性,则无需对该字段建立索引,否则,将浪费较大的内存也无实际意义。如下示例,预按书籍的名称过滤数据,对 bookName 字段建立 Filter 索引。
2. 创建集合,高可用默认规格实例,其分片 shard 可为1,副本 replicas 可为1。
PythonJavaGoCurlPython SDK 通过接口 create_collection() 创建集合 book-vector。index = Index( FilterIndex(name='id', field_type=FieldType.String, index_type=IndexType.PRIMARY_KEY), VectorIndex(name='vector', dimension=3, index_type=IndexType.HNSW, metric_type=MetricType.COSINE, params=HNSWParams(m=16, efconstruction=200)), FilterIndex(name='bookName', field_type=FieldType.String, index_type=IndexType.FILTER) ) # create a collection coll = db.create_collection( name='book-vector', shard=1, replicas=1, description='this is a collection book vector', index=index )print(vars(coll))Java SDK 通过接口 createCollection 创建集合 book-vector。CreateCollectionParam collectionParam = CreateCollectionParam.newBuilder() .withName("book-vector") .withShardNum(1) .withReplicaNum(1) .withDescription("this is a collection book vector") .addField(new FilterIndex("id", FieldType.String, IndexType.PRIMARY_KEY)) .addField(new VectorIndex("vector", 3, IndexType.HNSW, MetricType.COSINE, new HNSWParams(16, 200))) .addField(new FilterIndex("bookName", FieldType.String, IndexType.FILTER)) .build();Collection collection = db.createCollection(collectionParam);Go SDK 通过接口 CreateCollection() 创建集合 book-vector。var ( ctx = context.Background() database = "db-test" collectionName = "book-vector")index := tcvectordb.Indexes{ VectorIndex: []tcvectordb.VectorIndex{ { Dimension: 3, FilterIndex: tcvectordb.FilterIndex{ FieldName: "vector", FieldType: tcvectordb.Vector, IndexType: tcvectordb.HNSW, }, MetricType: tcvectordb.COSINE, Params: &tcvectordb.HNSWParam{ M: 16, EfConstruction: 200, }, }, }, FilterIndex: []tcvectordb.FilterIndex{ { FieldName: "id", FieldType: tcvectordb.String, IndexType: tcvectordb.PRIMARY, }, { FieldName: "bookName", FieldType: tcvectordb.String, IndexType: tcvectordb.FILTER, }, },}coll, _ := db.CreateCollection(ctx, collectionName, 1, 1, "this is a collection book vector", index)log.Printf("CreateCollection success: %v: %v", coll.DatabaseName, coll.CollectionNameHTTP 通过 /collection/create 创建集合 book-vector。curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\ http://10.0.X.X:80/collection/create \\ -d '{ "database": "db-test", "collection": "book-vector", "replicaNum": 1, "shardNum": 1, "description": "this is a collection book vector", "indexes": [ { "fieldName": "id", "fieldType": "string", "indexType": "primaryKey" }, { "fieldName": "vector", "fieldType": "vector", "indexType": "HNSW", "dimension": 3, "metricType": "COSINE", "params": { "M": 16, "efConstruction": 200 } }, { "fieldName": "bookName", "fieldType": "string", "indexType": "filter" } ]}'
五、插入数据
如下示例,为书籍集合 book-vector 写入3条数据。
注意:说明:
PythonJavaGoCurlPython SDK 通过接口 upsert() 为集合 book-vector 写入向量数据。res = client.upsert( database_name='db-test', collection_name='book-vector', documents=[ Document(id='0001', vector=[ 0.2123, 0.23, 0.213], author='罗贯中', bookName='三国演义', page=21), Document(id='0002', vector=[ 0.2123, 0.22, 0.213], author='吴承恩', bookName='西游记', page=22), Document(id='0003', vector=[ 0.2123, 0.21, 0.213], author='曹雪芹', bookName='红楼梦', page=23) ] )Java SDK 通过 upsert() 接口为集合 book-vector 批量插入数据。Document doc1 = Document.newBuilder() .withId("0001") .withVector(Arrays.asList(0.2123, 0.23, 0.213)) .addDocField(new DocField("bookName", "三国演义")) .addDocField(new DocField("author", "罗贯中")) .addDocField(new DocField("page", 21)) .build();Document doc2 = Document.newBuilder() .withId("0002") .withVector(Arrays.asList(0.2123, 0.22, 0.213)) .addDocField(new DocField("bookName", "西游记")) .addDocField(new DocField("author", "吴承恩")) .addDocField(new DocField("page", 22)) .build();Document doc3 = Document.newBuilder() .withId("0003") .withVector(Arrays.asList(0.2123, 0.21, 0.213)) .addDocField(new DocField("bookName", "红楼梦")) .addDocField(new DocField("author", "曹雪芹")) .addDocField(new DocField("page", 23)) .build();InsertParam insertParam = InsertParam.newBuilder() .addDocument(doc1) .addDocument(doc2) .addDocument(doc3) .build();private static final String DBNAME = "db-test";private static final String COLL_NAME = "book-vector"; AffectRes affectRes = client.upsert(DBNAME, COLL_NAME, insertParam);System.out.println("\\tres: " + affectRes); Go SDK 通过 Upsert() 接口为集合 book-vector 批量插入数据。result, err := client.Upsert(ctx, database, collectionName, []tcvectordb.Document{ { Id: "0001", Vector: []float32{0.2123, 0.23, 0.213}, Fields: map[string]tcvectordb.Field{ "bookName": {Val: "三国演义"}, "author": {Val: "罗贯中"}, "page": {Val: 21}, }, }, { Id: "0002", Vector: []float32{0.2123, 0.22, 0.213}, Fields: map[string]tcvectordb.Field{ "bookName": {Val: "西游记"}, "author": {Val: "吴承恩"}, "page": {Val: 22}, }, }, { Id: "0003", Vector: []float32{0.2123, 0.21, 0.213}, Fields: map[string]tcvectordb.Field{ "bookName": {Val: "红楼梦"}, "author": {Val: "曹雪芹"}, "page": {Val: 23}, }, },}, &tcvectordb.UpsertDocumentParams{})log.Printf("upsert result: %+v", result)如下示例,通过 /document/upsert 给集合 book-vector 批量插入数据。插入数据以 Document 为最小单元,插入3个 Document。curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\ http://10.0.X.X:80/document/upsert \\ -d '{ "database": "db-test", "collection": "book-vector", "documents": [ { "id": "0001", "vector": [ 0.2123, 0.23, 0.213 ], "author": "罗贯中", "bookName": "三国演义", "page": 21 }, { "id": "0002", "vector": [ 0.2123, 0.22, 0.213 ], "author": "吴承恩", "bookName": "西游记", "page": 22 }, { "id": "0003", "vector": [ 0.2123, 0.21, 0.213 ], "author": "曹雪芹", "bookName": "红楼梦", "page": 23 } ]}'执行成功,返回如下信息:{ "code": 0, "msg": "operation success", "affectedCount": 3}
六、相似性检索
相似度检索 是基于向量数据之间的相似度计算方法来检索与查询向量最相似的数据。
PythonJavaGoCurl
七、检索与输入向量数据相似的数据
Python SDK 提供了 search() 按照 Vector 搜索的能力,可根据指定的多个向量查找 TopK 个相似性结果。 如下示例,检索与 vectors 字段指定的三组向量数据分别相似,且满足 bookName 条件表达式的 Top3 数据。
# 1. vectors 指定了需检索的向量数据。# 2. filter 指定了 bookName 字段的条件表达式,过滤数据。# 3. limit 限制每个单元返回的相似性数据的条数,如 vector 写入三组向量数据,limit 为3,则每组向量返回 top3 的相似数据。# 4. params 指定索引类型对应的查询参数,HNSW 类型需要设置 ef,指定查询的遍历范围。doc_lists = client.search( database_name='db-test', collection_name='book-vector', vectors=[[0.3123, 0.43, 0.213],[0.315, 0.4, 0.216],[0.40, 0.38, 0.26]], filter='bookName in ("三国演义","西游记")', params=SearchParams(ef=200), limit=3 ) for i, docs in enumerate(doc_lists): print(i) for doc in docs: print(doc)
检索结果,如下所示。
注意:说明:
0{'id': '0001', 'score': 0.971423, 'bookName': '三国演义', 'page': 21, 'author': '罗贯中'}{'id': '0002', 'score': 0.966884, 'author': '吴承恩', 'page': 22, 'bookName': '西游记'}1{'id': '0001', 'score': 0.978463, 'page': 21, 'bookName': '三国演义', 'author': '罗贯中'}{'id': '0002', 'score': 0.974783, 'author': '吴承恩', 'bookName': '西游记', 'page': 22}2{'id': '0001', 'score': 0.986069, 'bookName': '三国演义', 'page': 21, 'author': '罗贯中'}{'id': '0002', 'score': 0.985201, 'author': '吴承恩', 'bookName': '西游记', 'page': 22}
八、检索与指定 Document ID 相似的数据
Python SDK 还提供了search_by_id() 按 id 检索的能力。如下示例,检索与 id(Document ID)为0001、0002 分别相似,且满足 bookName 条件表达式相似度最高的 Top3 数据。
# 1. document_ids 指定了需检索文档的 id。# 2. filter 指定了 bookName 字段的条件表达式,过滤数据。# 3. limit 限制每个单元返回的相似性数据的条数,如 document_ids 传入2个数据 id,limit 为 3,则返回每个 id 相似的 top3 向量。# 4. params 指定索引类型对应的查询参数。HNSW 类型需要设置 ef,指定查询的遍历范围。doc_lists = client.search_by_id( database_name='db-test', collection_name='book-vector', document_ids=['0001','0002'], filter='bookName in ("三国演义","西游记")', params=SearchParams(ef=200), limit=3 )for i, docs in enumerate(doc_lists): print(i) for doc in docs: print(doc)
查看输出,如下所示。
注意:说明:
注意:输出的 Document ID 顺序与查询时配置的参数 document_ids 输入的顺序一致。查询结果中0下面的三行为 id 为0001进行相似度查询的结果,1下面的三行为 id 为0002进行相似度查询的结果。
0{'id': '0001', 'score': 1.0, 'author': '罗贯中', 'bookName': '三国演义', 'page': 21}{'id': '0002', 'score': 0.999773, 'page': 22, 'author': '吴承恩', 'bookName': '西游记'}1{'id': '0002', 'score': 1.0, 'author': '吴承恩', 'bookName': '西游记', 'page': 22}{'id': '0001', 'score': 0.999773, 'bookName': '三国演义', 'page': 21, 'author': '罗贯中'}
九、检索与输入向量相似的数据
Java SDK 提供了 search() 接口按照 Vector 搜索的能力。如下示例,检索与 Vectors 字段指定的三组向量数据分别相似,且满足 bookName 条件表达式的 Top3 条数据。
SearchByVectorParam searchByVectorParam = SearchByVectorParam.newBuilder() // Vectors 指定了需检索的向量数据 .withVectors(Arrays.asList(Arrays.asList(0.3123, 0.43, 0.213), Arrays.asList(0.315, 0.4, 0.216), Arrays.asList(0.40, 0.38, 0.26))) // 若使用 HNSW 索引,则需要指定参数 ef,ef 越大,召回率越高,但也会影响检索速度 .withParams(new HNSWSearchParams(200)) // 指定返回的最相似的 Top K 的 K 值 .withLimit(3) // 设置标量字段的 Filter 表达式,过滤所需查询的文档 .withFilter("bookName in (\\"三国演义\\",\\"西游记\\")") .build();// 输出相似度检索结果 private static final String DBNAME = "db-test";private static final String COLL_NAME = "book-vector"; List<List<Document>> svDocs = client.search(DBNAME, COLL_NAME, searchByVectorParam);int i = 0;for (List<Document> docs : svDocs) { System.out.println("\\tres: " + i++); for (Document doc : docs) { System.out.println("\\tres: " + doc.toString()); }}
检索结果,如下所示。
注意:说明:
res: 0 res: {"id":"0001","score":0.971423,"page":21,"bookName":"三国演义","author":"罗贯中"} res: {"id":"0002","score":0.966884,"bookName":"西游记","page":22,"author":"吴承恩"} res: 1 res: {"id":"0001","score":0.978463,"page":21,"author":"罗贯中","bookName":"三国演义"} res: {"id":"0002","score":0.974783,"bookName":"西游记","page":22,"author":"吴承恩"} res: 2 res: {"id":"0001","score":0.986069,"bookName":"三国演义","author":"罗贯中","page":21} res: {"id":"0002","score":0.985201,"author":"吴承恩","bookName":"西游记","page":22}
十、根据 ID 进行相似度检索
Java SDK 还提供了 searchById() 接口按 id 检索的能力。如下示例,检索与 id(Document ID)为0001、0002分别相似,且满足 bookName 条件表达式的 Top3 条数据。
SearchByIdParam searchByIdParam = SearchByIdParam.newBuilder() .withDocumentIds(Arrays.asList("0001", "0002")) // 若使用 HNSW 索引,则需要指定参数 ef,ef 越大,召回率越高,但也会影响检索速度 .withParams(new HNSWSearchParams(200)) // 指定 Top K 的 K 值 .withLimit(3) // 使用 filter 过滤数据 .withFilter("bookName in (\\"三国演义\\",\\"西游记\\")") .build();private static final String DBNAME = "db-test";private static final String COLL_NAME = "book-vector"; List<List<Document>> siDocs = client.searchById(DBNAME, COLL_NAME, searchByIdParam);int i = 0;for (List<Document> docs : siDocs) { System.out.println("\\tres: " + i++); for (Document doc : docs) { System.out.println("\\tres: " + doc.toString()); }}
检索结果,如下所示。
注意:说明:
注意:输出数组的 Document 顺序与查询时配置的参数 DocumentIds 输入的顺序一致。如下 documents 中第一个中括号为 id 为0001的相似数据,第二个中括号为 id 为0002的相似数据。
res: 0res: {"id":"0001","score":1.0,"bookName":"三国演义","page":21,"author":"罗贯中"}res: {"id":"0002","score":0.999773,"author":"吴承恩","bookName":"西游记","page":22}res: 1res: {"id":"0002","score":1.0,"author":"吴承恩","bookName":"西游记","page":22}res: {"id":"0001","score":0.999773,"bookName":"三国演义","author":"罗贯中","page":21}
十一、检索与输入向量相似的数据
Go SDK 提供了 Search() 接口按照 Vector 搜索的能力。如下示例,检索与指定的三组向量数据分别相似,且满足 bookName 条件表达式的 Top3 条数据。
filter := tcvectordb.NewFilter(`bookName in ("三国演义","西游记")`)searchRes, _ := client.Search(ctx, database, collectionName, [][]float32{ {0.3123, 0.43, 0.213}, {0.315, 0.4, 0.216}, {0.40, 0.38, 0.26},}, &tcvectordb.SearchDocumentParams{ Filter: filter, Params: &tcvectordb.SearchDocParams{Ef: 200}, Limit: 3,})for i, docs := range searchRes.Documents { log.Printf("doc %d result: ", i) for _, doc := range docs { log.Printf("document: %+v", doc) }}
检索结果,如下所示。
注意:说明:
2024/01/03 17:19:11 doc 0 result: 2024/01/03 17:21:29 document: {Id:0001 Vector:[] Score:0.971423 Fields:map[author:罗贯中 bookName:三国演义 page:21]}2024/01/03 17:21:29 document: {Id:0002 Vector:[] Score:0.966884 Fields:map[author:吴承恩 bookName:西游记 page:22]}2024/01/03 17:21:29 doc 1 result: 2024/01/03 17:21:29 document: {Id:0001 Vector:[] Score:0.978463 Fields:map[author:罗贯中 bookName:三国演义 page:21]}2024/01/03 17:21:29 document: {Id:0002 Vector:[] Score:0.974783 Fields:map[author:吴承恩 bookName:西游记 page:22]}2024/01/03 17:21:29 doc 2 result: 2024/01/03 17:21:29 document: {Id:0001 Vector:[] Score:0.986069 Fields:map[author:罗贯中 bookName:三国演义 page:21]}2024/01/03 17:21:29 document: {Id:0002 Vector:[] Score:0.985201 Fields:map[author:吴承恩 bookName:西游记 page:22]}
十二、检索与指定 id 相似的数据
Go SDK 还提供了 SearchById() 接口按 id 检索的能力。如下示例,检索与 id(Document ID)为 0001、0002分别相似,且满足 bookName 条件表达式的 Top3 条数据。
documentId := []string{"0001", "0002"}filter := tcvectordb.NewFilter(`bookName in ("三国演义","西游记")`)searchRes, err := client.SearchById(ctx, database, collectionName, documentId, &tcvectordb.SearchDocumentParams{ Filter: filter, Params: &tcvectordb.SearchDocParams{Ef: 200}, Limit: 3,})for i, docs := range searchRes.Documents { log.Printf("doc %d result: ", i) for _, doc := range docs { log.Printf("document: %+v", doc) }}
检索结果,如下所示。
2024/01/03 17:24:27 doc 0 result: 2024/01/03 17:24:27 document: {Id:0001 Vector:[] Score:1 Fields:map[author:罗贯中 bookName:三国演义 page:21]}2024/01/03 17:24:27 document: {Id:0002 Vector:[] Score:0.999773 Fields:map[author:吴承恩 bookName:西游记 page:22]}2024/01/03 17:24:27 doc 1 result: 2024/01/03 17:24:27 document: {Id:0002 Vector:[] Score:1 Fields:map[author:吴承恩 bookName:西游记 page:22]}2024/01/03 17:24:27 document: {Id:0001 Vector:[] Score:0.999773 Fields:map[author:罗贯中 bookName:三国演义 page:21]}
十三、检索与输入向量相似的数据
HTTP 支持 /document/search 接口按照 Vector 检索的能力,查询与指定向量 vectors 字段相似的数据。如下示例,检索与指定的三组向量数据分别相似,且满足 bookName 条件表达式的 Top3 条数据。
curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\ http://10.0.X.X:80/document/search \\ -d '{ "database": "db-test", "collection": "book-vector", "search": { "vectors": [ [ 0.3123, 0.43, 0.213 ], [ 0.315, 0.4, 0.216 ], [ 0.40, 0.38, 0.26 ] ], "params": { "ef": 200 }, "filter": "bookName in (\\"三国演义\\",\\"西游记\\")", "limit": 3 }}'
执行成功,返回如下信息:
注意:说明:
{ "code": 0, "msg": "operation success", "documents": [ [ { "id": "0001", "score": 0.971423, "page": 21, "author": "罗贯中", "bookName": "三国演义" }, { "id": "0002", "score": 0.966884, "author": "吴承恩", "page": 22, "bookName": "西游记" } ], [ { "id": "0001", "score": 0.978463, "author": "罗贯中", "bookName": "三国演义", "page": 21 }, { "id": "0002", "score": 0.974783, "page": 22, "bookName": "西游记", "author": "吴承恩" } ], [ { "id": "0001", "score": 0.986069, "bookName": "三国演义", "author": "罗贯中", "page": 21 }, { "id": "0002", "score": 0.985201, "author": "吴承恩", "page": 22, "bookName": "西游记" } ] ]}
十四、检索与指定 ID 相似的数据
HTTP 还提供了 /document/search按 id 检索的能力。如下示例,检索与 id(Document ID)为 0001、0002分别相似,且满足 bookName 条件表达式的 Top3 条数据。
curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\ http://10.0.X.X:80/document/search \\ -d '{ "database": "db-test", "collection": "book-vector", "search": { "documentIds": [ "0001", "0002" ], "params": { "ef": 200 }, "retrieveVector": true, "filter": "bookName in (\\"三国演义\\",\\"西游记\\")", "limit": 3 }}'
执行成功,返回如下信息:
注意:说明:
注意:输出数组的 Document 顺序与查询时配置的参数 documentIds 输入 id 的顺序一致。如下 documents 中第一个中括号为 id 为 0001的相似数据,第二个中括号为 id 为 0002 的相似数据。
{ "code": 0, "msg": "operation success", "documents": [ [ { "id": "0001", "score": 1.0, "bookName": "三国演义", "author": "罗贯中", "page": 21 }, { "id": "0002", "score": 0.999773, "page": 22, "bookName": "西游记", "author": "吴承恩" } ], [ { "id": "0002", "score": 1.0, "page": 22, "author": "吴承恩", "bookName": "西游记" }, { "id": "0001", "score": 0.999773, "page": 21, "author": "罗贯中", "bookName": "三国演义" } ] ]}
十五、删除数据库
PythonJavaGoCurlPython SDK 通过 drop_database() 接口删除数据库 db-test。client.drop_database(database_name='db-test')Java SDK 通过 dropDatabase() 删除数据库 db-test。 client.dropDatabase("db-test");Go SDK 通过 DropDatabase() 删除数据库 db-test。result, _ := client.DropDatabase(context.Background(), database)HTTP 使用 /database/drop 接口删除数据库 db_test。如下示例,url 地址与 api_key 需要分别替换为已购买的实例的外网地址与 API Key。curl -i -X POST \\ -H 'Content-Type: application/json' \\ -H 'Authorization: Bearer account=root&api_key=A5VOgsMpGWJhUI0WmUbY********************' \\ http://10.0.X.X:80/database/drop \\ -d '{ "database": "db-test"}'