Knowledge Bases API
KnowledgeBase
Bases: SynalinksSaveable
A generic graph knowledge base.
Using Neo4j graph database
import synalinks
import os
class Document(synalinks.Entity):
title: str
content: str
class Chunk(synalinks.Entity):
content: str
class IsPartOf(synalinks.Relation):
source: Chunk
target: Document
embedding_model = synalinks.EmbeddingModel(
model="ollama/mxbai-embed-large"
)
os.environ["NEO4J_DATABASE"] = "your-neo4j-db" # (Default to "neo4j")
os.environ["NEO4J_USERNAME"] = "your-neo4j-username" # (Default to "neo4j")
os.environ["NEO4J_PASSWORD"] = "your-neo4j-password" # (Default to "neo4j")
knowledge_base = synalinks.KnowledgeBase(
index_name="neo4j://localhost:7687",
entity_models=[Document, Chunk],
relation_models=[IsPartOf],
embedding_model=embedding_model,
metric="cosine",
wipe_on_start=False,
)
Note: Obviously, use an .env
file and .gitignore
to avoid putting
your username and password in the code or a config file that can lead to
leackage when pushing it into repositories.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
index_name
|
str
|
The index name/url of the database. |
None
|
entity_models
|
list
|
The entity models being a list of |
None
|
relation_models
|
list
|
The relation models being a list of |
None
|
embedding_model
|
EmbeddingModel
|
The embedding model. |
None
|
metric
|
str
|
The metric to use for the vector index ( |
'cosine'
|
wipe_on_start
|
bool
|
Wether or not to wipe the graph database at start (Default to False). |
False
|
Source code in synalinks/src/knowledge_bases/knowledge_base.py
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
|
query(query, params=None, **kwargs)
async
Execute a query against the knowledge base.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
query
|
str
|
The Cypher query to execute. The format depends on the underlying database adapter (e.g., Cypher for Neo4j). |
required |
Returns:
Type | Description |
---|---|
GenericResult
|
the query results |
Source code in synalinks/src/knowledge_bases/knowledge_base.py
similarity_search(similarity_search, k=10, threshold=0.8)
async
Perform similarity search to find entities similar to the given text.
Uses vector embeddings to find entities in the knowledge base that are semantically similar to the provided text query.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
similarity_search
|
JsonDataModel
|
The |
required |
k
|
int
|
Maximum number of similar entities to return. Defaults to 10. |
10
|
threshold
|
float
|
Minimum similarity score for results. Entities with similarity below this threshold are excluded. Should be between 0.0 and 1.0 (Defaults to 0.8). |
0.8
|
Source code in synalinks/src/knowledge_bases/knowledge_base.py
triplet_search(triplet_search, k=10, threshold=0.8)
async
Search for triplets in the knowledge graph.
Finds relationship triplets in the knowledge base that match or are similar to the provided triplet pattern.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
triplet_search
|
JsonDataModel
|
The |
required |
k
|
int
|
Maximum number of matching triplets to return. (Defaults to 10). |
10
|
threshold
|
float
|
Minimum similarity score for triplet matches. Triplets with similarity below this threshold are excluded. Should be between 0.0 and 1.0. (Defaults to 0.8). |
0.8
|
Source code in synalinks/src/knowledge_bases/knowledge_base.py
update(data_model, threshold=0.8)
async
Update the knowledge base with new data.
Adds or updates entities and relationships in the knowledge graph based on the provided data model. Perform alignment operations to merge similar entities.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data_model
|
JsonDataModel | DataModel
|
The data model containing entities and relations to be added or updated in the knowledge base. Should conform to the entity or relation models defined during initialization. |
required |
threshold
|
float
|
Similarity threshold for entity alignment. Entities with similarity above this threshold will be merged. Should be between 0.0 and 1.0 (Defaults to 0.8). |
0.8
|