Knowledge bases

class mindsdb_sdk.knowledge_bases.KnowledgeBase(project, data: dict)

Bases: mindsdb_sdk.query.Query

Knowledge base object, used to update or query knowledge base

Add data to knowledge base:

>>> kb.insert(pd.read_csv('house_sales.csv'))

Query relevant results

>>> df = kb.find('flats').fetch()
find(query: str, limit: int = 100)

Query data from knowledge base. Knowledge base should return a most relevant results for the query

>>> # query knowledge base
>>> query = my_kb.find('dogs')
>>> # fetch dataframe to client
>>> print(query.fetch())
Parameters
  • query – text query

  • limit – count of rows in result, default 100

Returns

Query object

insert(data: Union[pandas.core.frame.DataFrame, mindsdb_sdk.query.Query, dict])

Insert data to knowledge base

>>> # insert using query
>>> my_kb.insert(server.databases.example_db.tables.houses_sales.filter(type='house'))
>>> # using dataframe
>>> my_kb.insert(pd.read_csv('house_sales.csv'))
>>> # using dict
>>> my_kb.insert({'type': 'house', 'date': '2020-02-02'})

Data will be if id (defined by id_column param, see create knowledge base) is already exists in knowledge base it will be replaced

Parameters

data – Dataframe or Query object or dict.

class mindsdb_sdk.knowledge_bases.KnowledgeBases(project, api)

Bases: mindsdb_sdk.utils.objects_collection.CollectionBase

Knowledge bases

Get list:

>>> kb_list = server.knowledge_bases.list()
>>> kb = kb_list[0]

Get by name:

>>> kb = server.knowledge_bases.get('my_kb')
>>> # or :
>>> kb = server.knowledge_bases.my_kb

Create:

>>> kb = server.knowledge_bases.create('my_kb')

Drop:

>>> server.knowledge_bases.drop('my_kb')
create(name: str, model: mindsdb_sdk.models.Model = None, storage: mindsdb_sdk.tables.Table = None, metadata_columns: mindsdb_sdk.knowledge_bases.KnowledgeBases.list = None, content_columns: mindsdb_sdk.knowledge_bases.KnowledgeBases.list = None, id_column: str = None, params: dict = None) → Union[mindsdb_sdk.knowledge_bases.KnowledgeBase, mindsdb_sdk.query.Query]

Create knowledge base:

>>> kb = server.knowledge_bases.create(
...   'my_kb',
...   model=server.models.emb_model,
...   storage=server.databases.pvec.tables.tbl1,
...   metadata_columns=['date', 'author'],
...   content_columns=['review', 'description'],
...   id_column='number',
...   params={'a': 1}
...)
Parameters
  • name – name of the knowledge base

  • model – embedding model, optional. Default: ‘sentence_transformers’ will be used (defined in mindsdb server)

  • storage – vector storage, optional. Default: chromadb database will be created

  • metadata_columns – columns to use as metadata, optional. Default: all columns which are not content and id

  • content_columns – columns to use as content, optional. Default: all columns except id column

  • id_column – the column to use as id, optinal. Default: ‘id’, if exists

  • params – other parameters to knowledge base

Returns

created KnowledgeBase object

drop(name: str)
Parameters

name

Returns

get(name: str) → mindsdb_sdk.knowledge_bases.KnowledgeBase

Get knowledge base by name

Parameters

name – name of the knowledge base

Returns

KnowledgeBase object

list() → List[mindsdb_sdk.knowledge_bases.KnowledgeBase]

Get list of knowledge bases inside of project:

>>> kb_list = project.knowledge_bases.list()
Returns

list of knowledge bases