--- slug: /get-or-create-collection-of-api --- # get_or_create_collection - Create or query a collection The `get_or_create_collection()` function creates or queries a collection. If the collection does not exist in the database, it is created. If it exists, the corresponding result is obtained. :::info This API is only available when using a client. For more information about the client, see [Client](../50.client.md). ::: ## Prerequisites * You have installed pyseekdb. For more information about how to install pyseekdb, see [Quick Start](../../10.pyseekdb-sdk/10.pyseekdb-sdk-get-started.md). * You have connected to the database. For more information about how to connect, see [Client](../50.client.md). * If you are using seekdb in server mode or OceanBase Database, ensure that the connected user has the `CREATE` privilege. For more information about how to check the privileges of the current user, see [Check User Privileges](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003980135). If the user does not have this privilege, contact the administrator to grant it. For more information about how to directly grant privileges, see [Directly Grant Privileges](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003980140). ## Define a table name When creating a table, you need to define a table name. The following requirements must be met: * In seekdb, each table name must be unique within the database. * The table name must be no longer than 64 characters. * It is recommended to use meaningful names for tables instead of generic names like t1 or table1. For more information about table naming conventions, see [Table Naming Conventions](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003977289). ## Request parameters ```python create_collection(name = name,configuration = configuration, embedding_function = embedding_function ) ``` |Parameter|Value Type|Required|Description|Example Value| |---|---|---|---|---| |`name`|string|Yes|The name of the collection to be created. |my_collection| |`configuration`|HNSWConfiguration|No|The index configuration with dimension and distance metric. If not provided, the default value is used, which is `dimension=384, distance='cosine'`. If set to `None`, the dimension will be calculated from the `embedding_function` value. |HNSWConfiguration(dimension=384, distance='cosine')| |`embedding_function`|EmbeddingFunction|No|The function to convert to vectors. If not provided, `DefaultEmbeddingFunction()(384 dimensions)` is used. If set to `None`, the collection will not include embedding functionality. If embedding functionality is provided, it will be automatically calculated based on `configuration.dimension`. |DefaultEmbeddingFunction()| :::info When `embedding_function` is provided, the system will automatically calculate the vector dimension by calling the function. If `configuration.dimension` is also provided, it must match the dimension of `embedding_function`, otherwise a ValueError will be raised. ::: ## Request example ```python import pyseekdb from pyseekdb import DefaultEmbeddingFunction, HNSWConfiguration # Create a client client = pyseekdb.Client() # Get or create collection (creates if doesn't exist) collection = client.get_or_create_collection( name="my_collection4", configuration=HNSWConfiguration(dimension=384, distance='cosine'), embedding_function=DefaultEmbeddingFunction() ) ``` ## Response parameters None ## References * [Create a collection](100.create-collection-of-api.md) * [Query a collection](200.get-collection-of-api.md) * [Get a list of collections](300.list-collection-of-api.md) * [Count collections](350.count-collection-of-api.md) * [Delete a collection](400.delete-collection-of-api.md)