MCPcopy Index your code
hub / github.com/ModelEngine-Group/nexent / create_knowledge_record

Function create_knowledge_record

backend/database/knowledge_db.py:25–89  ·  view source on GitHub ↗

Create a knowledge base record Args: query: Dictionary containing all knowledge base data, must include: - index_name: Knowledge base name - knowledge_describe: Knowledge base description - knowledge_status: Knowledge base status - us

(query: Dict[str, Any])

Source from the content-addressed store, hash-verified

23
24
25def create_knowledge_record(query: Dict[str, Any]) -> Dict[str, Any]:
26 """
27 Create a knowledge base record
28
29 Args:
30 query: Dictionary containing all knowledge base data, must include:
31 - index_name: Knowledge base name
32 - knowledge_describe: Knowledge base description
33 - knowledge_status: Knowledge base status
34 - user_id: Optional user ID for created_by and updated_by fields
35 - tenant_id: Optional tenant ID for created_by and updated_by fields
36 - embedding_model_name: embedding model name for the knowledge base
37 - preserve_source_file: whether to preserve uploaded source documents (optional)
38
39 Returns:
40 Dict[str, Any]: Dictionary with at least 'knowledge_id' and 'index_name'
41 """
42 try:
43 with get_db_session() as session:
44 # Determine user-facing knowledge base name
45 knowledge_name = query.get(
46 "knowledge_name") or query.get("index_name")
47
48 # Prepare data dictionary
49 group_ids = query.get("group_ids")
50 data: Dict[str, Any] = {
51 "knowledge_describe": query.get("knowledge_describe", ""),
52 "created_by": query.get("user_id"),
53 "updated_by": query.get("user_id"),
54 "knowledge_sources": query.get("knowledge_sources", "elasticsearch"),
55 "tenant_id": query.get("tenant_id"),
56 "embedding_model_name": query.get("embedding_model_name"),
57 "embedding_model_id": query.get("embedding_model_id"),
58 "knowledge_name": knowledge_name,
59 "group_ids": convert_list_to_string(group_ids) if isinstance(group_ids, list) else group_ids,
60 "ingroup_permission": query.get("ingroup_permission"),
61 "preserve_source_file": query.get("preserve_source_file", True),
62 }
63
64 # For backward compatibility: if caller explicitly provides index_name,
65 # respect it and do not regenerate; otherwise generate after flush.
66 explicit_index_name = query.get("index_name")
67 if explicit_index_name:
68 data["index_name"] = explicit_index_name
69
70 # Create new record
71 new_record = KnowledgeRecord(**data)
72 session.add(new_record)
73 session.flush()
74
75 # Generate internal index_name for new records when not explicitly provided
76 if not explicit_index_name:
77 generated_index_name = _generate_index_name(
78 new_record.knowledge_id)
79 new_record.index_name = generated_index_name
80 session.flush()
81
82 session.commit()

Calls 8

get_db_sessionFunction · 0.90
convert_list_to_stringFunction · 0.90
KnowledgeRecordClass · 0.90
_generate_index_nameFunction · 0.85
commitMethod · 0.80
getMethod · 0.45
addMethod · 0.45
flushMethod · 0.45