Template rejig (#48)

* document-rag / graph-rag refactor of templates

* Tweaking the docs and categories

* Clarify triple store vs RAG

* Tweak knowledge graph linkage

* Doc embedding for Qdrant

* Fix document RAG on Qdrant

* Fix templates

* Bump version

* Updated templates
This commit is contained in:
cybermaggedon 2024-09-03 00:09:15 +01:00 committed by GitHub
parent 121f7bb776
commit 208c219962
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 1407 additions and 454 deletions

View file

@ -1,15 +1,11 @@
[
import "patterns/pulsar.jsonnet",
import "patterns/pulsar-manager.jsonnet",
import "patterns/trustgraph-base.jsonnet",
import "patterns/graph-rag-cassandra.jsonnet",
import "patterns/graph-rag-neo4j.jsonnet",
import "patterns/prompt-template-kg-query.jsonnet",
import "patterns/prompt-template-definitions.jsonnet",
import "patterns/prompt-template-relationships.jsonnet",
import "patterns/prompt-template-document-query.jsonnet",
import "patterns/prompt-template-rows-template.jsonnet",
import "patterns/override-recursive-chunker.jsonnet",
import "patterns/document-rag.jsonnet",
import "patterns/embeddings-hf.jsonnet",
import "patterns/embeddings-ollama.jsonnet",
import "patterns/grafana.jsonnet",
import "patterns/triple-store-cassandra.jsonnet",
import "patterns/triple-store-neo4j.jsonnet",
import "patterns/graph-rag.jsonnet",
import "patterns/llm-azure.jsonnet",
import "patterns/llm-bedrock.jsonnet",
import "patterns/llm-claude.jsonnet",
@ -17,7 +13,15 @@
import "patterns/llm-ollama.jsonnet",
import "patterns/llm-openai.jsonnet",
import "patterns/llm-vertexai.jsonnet",
import "patterns/override-recursive-chunker.jsonnet",
import "patterns/prompt-template-definitions.jsonnet",
import "patterns/prompt-template-document-query.jsonnet",
import "patterns/prompt-template-kg-query.jsonnet",
import "patterns/prompt-template-relationships.jsonnet",
import "patterns/prompt-template-rows-template.jsonnet",
import "patterns/pulsar-manager.jsonnet",
import "patterns/pulsar.jsonnet",
import "patterns/trustgraph-base.jsonnet",
import "patterns/vector-store-milvus.jsonnet",
import "patterns/vector-store-qdrant.jsonnet",
import "patterns/grafana.jsonnet",
]

View file

@ -0,0 +1,38 @@
local base = import "base/base.jsonnet";
local images = import "values/images.jsonnet";
local url = import "values/url.jsonnet";
local prompts = import "prompt-template.jsonnet";
{
services +: {
"document-rag": base + {
image: images.trustgraph,
command: [
"document-rag",
"-p",
url.pulsar,
"--prompt-request-queue",
"non-persistent://tg/request/prompt-rag",
"--prompt-response-queue",
"non-persistent://tg/response/prompt-rag-response",
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
}
} + prompts

View file

@ -0,0 +1,40 @@
local base = import "base/base.jsonnet";
local images = import "values/images.jsonnet";
local url = import "values/url.jsonnet";
local prompts = import "prompt-template.jsonnet";
{
"embeddings-model":: "all-MiniLM-L6-v2",
services +: {
embeddings: base + {
image: images.trustgraph,
command: [
"embeddings-hf",
"-p",
url.pulsar,
"-m",
$["embeddings-model"],
],
deploy: {
resources: {
limits: {
cpus: '1.0',
memory: '256M'
},
reservations: {
cpus: '0.5',
memory: '256M'
}
}
},
},
}
} + prompts

View file

@ -0,0 +1,41 @@
local base = import "base/base.jsonnet";
local images = import "values/images.jsonnet";
local url = import "values/url.jsonnet";
local prompts = import "prompt-template.jsonnet";
{
"embeddings-model":: "mxbai-embed-large",
"ollama-url":: "${OLLAMA_HOST}",
services +: {
embeddings: base + {
image: images.trustgraph,
command: [
"embeddings-ollama",
"-p",
url.pulsar,
"-m",
$["embeddings-model"],
"-r",
$["ollama-url"],
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
}
} + prompts

View file

@ -0,0 +1,92 @@
local base = import "base/base.jsonnet";
local images = import "values/images.jsonnet";
local url = import "values/url.jsonnet";
local prompts = import "prompt-template.jsonnet";
{
"graph-rag-entity-limit":: 50,
"graph-rag-triple-limit":: 30,
"graph-rag-max-subgraph-size":: 3000,
services +: {
"kg-extract-definitions": base + {
image: images.trustgraph,
command: [
"kg-extract-definitions",
"-p",
url.pulsar,
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
"kg-extract-relationships": base + {
image: images.trustgraph,
command: [
"kg-extract-relationships",
"-p",
url.pulsar,
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
"graph-rag": base + {
image: images.trustgraph,
command: [
"graph-rag",
"-p",
url.pulsar,
"--prompt-request-queue",
"non-persistent://tg/request/prompt-rag",
"--prompt-response-queue",
"non-persistent://tg/response/prompt-rag-response",
"--entity-limit",
std.toString($["graph-rag-entity-limit"]),
"--triple-limit",
std.toString($["graph-rag-triple-limit"]),
"--max-subgraph-size",
std.toString($["graph-rag-max-subgraph-size"]),
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
}
} + prompts

View file

@ -53,10 +53,7 @@ milvus + {
},
},
/*
// Document embeddings writer & query service. Not currently enabled.
// Document embeddings writer & query service.
"store-doc-embeddings": base + {
image: images.trustgraph,
command: [
@ -103,8 +100,6 @@ milvus + {
},
},
*/
}
}

View file

@ -3,8 +3,11 @@ local images = import "values/images.jsonnet";
local url = import "values/url.jsonnet";
local prompts = import "prompts/slm.jsonnet";
{
"ollama-model":: "gemma2:9b",
"ollama-url":: "${OLLAMA_HOST}",
services +: {
"ollama-model":: "gemma2:9b",
"text-completion": base + {
image: images.trustgraph,
@ -15,7 +18,7 @@ local prompts = import "prompts/slm.jsonnet";
"-m",
$["ollama-model"],
"-r",
"${OLLAMA_HOST}",
$["ollama-url"],
],
deploy: {
resources: {
@ -40,7 +43,7 @@ local prompts = import "prompts/slm.jsonnet";
"-m",
$["ollama-model"],
"-r",
"${OLLAMA_HOST}",
$["ollama-url"],
"-i",
"non-persistent://tg/request/text-completion-rag",
"-o",

View file

@ -53,9 +53,7 @@ qdrant + {
},
},
/*
// Document embeddings writer & query service. Not currently enabled.
// Document embeddings writer & query service.
"store-doc-embeddings": base + {
image: images.trustgraph,
@ -103,8 +101,6 @@ qdrant + {
},
},
*/
}
}

View file

@ -7,10 +7,6 @@ local prompts = import "prompt-template.jsonnet";
"chunk-size":: 250,
"chunk-overlap":: 15,
"embeddings-model":: "all-MiniLM-L6-v2",
"graph-rag-entity-limit":: 50,
"graph-rag-triple-limit":: 30,
"graph-rag-max-subgraph-size":: 3000,
services +: {
@ -81,102 +77,6 @@ local prompts = import "prompt-template.jsonnet";
},
},
embeddings: base + {
image: images.trustgraph,
command: [
"embeddings-hf",
"-p",
url.pulsar,
"-m",
$["embeddings-model"],
],
deploy: {
resources: {
limits: {
cpus: '1.0',
memory: '256M'
},
reservations: {
cpus: '0.5',
memory: '256M'
}
}
},
},
"kg-extract-definitions": base + {
image: images.trustgraph,
command: [
"kg-extract-definitions",
"-p",
url.pulsar,
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
"kg-extract-relationships": base + {
image: images.trustgraph,
command: [
"kg-extract-relationships",
"-p",
url.pulsar,
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
"graph-rag": base + {
image: images.trustgraph,
command: [
"graph-rag",
"-p",
url.pulsar,
"--prompt-request-queue",
"non-persistent://tg/request/prompt-rag",
"--prompt-response-queue",
"non-persistent://tg/response/prompt-rag-response",
"--entity-limit",
std.toString($["graph-rag-entity-limit"]),
"--triple-limit",
std.toString($["graph-rag-triple-limit"]),
"--max-subgraph-size",
std.toString($["graph-rag-max-subgraph-size"]),
],
deploy: {
resources: {
limits: {
cpus: '0.5',
memory: '128M'
},
reservations: {
cpus: '0.1',
memory: '128M'
}
}
},
},
}
} + prompts

View file

@ -3,9 +3,13 @@ local components = {
"bedrock": import "components/bedrock.jsonnet",
"claude": import "components/claude.jsonnet",
"cohere": import "components/cohere.jsonnet",
"document-rag": import "components/document-rag.jsonnet",
"embeddings-hf": import "components/embeddings-hf.jsonnet",
"embeddings-ollama": import "components/embeddings-ollama.jsonnet",
"grafana": import "components/grafana.jsonnet",
"graph-rag-cassandra": import "components/cassandra.jsonnet",
"graph-rag-neo4j": import "components/neo4j.jsonnet",
"graph-rag": import "components/graph-rag.jsonnet",
"triple-store-cassandra": import "components/cassandra.jsonnet",
"triple-store-neo4j": import "components/neo4j.jsonnet",
"ollama": import "components/ollama.jsonnet",
"openai": import "components/openai.jsonnet",
"override-recursive-chunker": import "components/chunker-recursive.jsonnet",

View file

@ -14,6 +14,10 @@ local components = {
openai: import "components/openai.jsonnet",
mix: import "components/mix.jsonnet",
vertexai: import "components/vertexai.jsonnet",
"embeddings-hf": import "components/embeddings-hf.jsonnet",
"embeddings-ollama": import "components/embeddings-ollama.jsonnet",
"graph-rag": import "components/graph-rag.jsonnet",
"document-rag": import "components/document-rag.jsonnet",
};
local options = std.split(std.extVar("options"), ",");

View file

@ -0,0 +1,14 @@
{
pattern: {
name: "document-rag",
icon: "🤝😂",
title: "Add DocumentRAG processing flow",
description: "This pattern adds DocumentRAG components for extracting and querying documents based on document embeddings. You should make sure a vector store is included in your plan.",
requires: ["pulsar", "trustgraph", "llm"],
features: ["document-rag"],
args: [
],
category: [ "processing" ],
},
module: "components/document-rag.jsonnet",
}

View file

@ -0,0 +1,26 @@
{
pattern: {
name: "embeddings-hf",
icon: "🤖💬",
title: "Add embeddings model which uses HuggingFace models",
description: "This pattern integrates an embeddings model based on HuggingFace sentence-transformer library.",
requires: ["pulsar", "trustgraph"],
features: ["llm"],
args: [
{
name: "embeddings-model",
label: "Embeddings model",
type: "select",
description: "Embeddings model for sentence analysis",
options: [
{ id: "all-MiniLM-L6-v2", description: "all-MiniLM-L6-v2" },
{ id: "mixedbread-ai/mxbai-embed-large-v1", description: "mxbai-embed-large-v1" },
],
default: "all-MiniLM-L6-v2",
required: true,
},
],
category: [ "embeddings" ],
},
module: "components/embeddings-hf.jsonnet",
}

View file

@ -0,0 +1,34 @@
{
pattern: {
name: "embeddings-ollama",
icon: "🤖💬",
title: "Add embeddings model hosted on Ollama",
description: "This pattern integrates an embeddings model based on HuggingFace sentence-transformer library.",
requires: ["pulsar", "trustgraph"],
features: ["llm"],
args: [
{
name: "embeddings-model",
label: "Embeddings model",
type: "select",
description: "Embeddings model for sentence analysis",
options: [
{ id: "mxbai-embed-large", description: "mxbai-embed-large" },
],
default: "mxbai-embed-large",
required: true,
},
{
name: "ollama-url",
label: "URL",
type: "text",
width: 120,
description: "URL of the Ollama service",
default: "http://ollama:11434",
required: true,
},
],
category: [ "embeddings" ],
},
module: "components/embeddings-hf.jsonnet",
}

View file

@ -1,13 +0,0 @@
{
pattern: {
name: "graph-rag-cassandra",
icon: "🖇🙋",
title: "Add GraphRAG indexing and querying using Cassandra",
description: "The core Trustgraph deployment does not include a GraphRag store; this pattern adds the Cassandra store, and adds GraphRAG adapters so that Cassandra is integrated with GraphRag indexing and querying.",
requires: ["pulsar", "trustgraph"],
features: ["cassandra", "rag"],
args: [],
category: ["knowledge-graph"],
},
module: "components/cassandra.jsonnet",
}

View file

@ -1,13 +0,0 @@
{
pattern: {
name: "graph-rag-neo4j",
icon: "🖇🙋",
title: "Deploys GraphRAG indexing and querying using a Neo4j community edition store",
description: "The core Trustgraph deployment does not include a GraphRag store; this pattern adds the Neo4j store, and adds GraphRAG adapters so that Neo4j is integrated with GraphRag indexing and querying.",
requires: ["pulsar", "trustgraph"],
features: ["neo4j", "rag"],
args: [],
category: [ "knowledge-graph" ],
},
module: "components/neo4j.jsonnet",
}

View file

@ -0,0 +1,38 @@
{
pattern: {
name: "graph-rag",
icon: "🤝😂",
title: "Add GraphRAG processing flow",
description: "This pattern adds GraphRAG components for extracting and querying graph edges. You should make sure a triple store and vector store are included in your plan.",
requires: ["pulsar", "trustgraph", "llm"],
features: ["graph-rag"],
args: [
{
name: "graph-rag-entity-limit",
label: "GraphRAG entity query limit",
type: "integer",
description: "Limit on entities to fetch from vector store",
default: 50,
required: true,
},
{
name: "graph-rag-triple-limit",
label: "GraphRAG triple query limit",
type: "integer",
description: "Limit on triples to fetch from triple store",
default: 30,
required: true,
},
{
name: "graph-rag-max-subgraph-size",
label: "GraphRAG maximum subgraph size",
type: "integer",
description: "Limit on size of subgraph to present to text-completion model",
default: 3000,
required: true,
},
],
category: [ "processing" ],
},
module: "components/trustgraph.jsonnet",
}

View file

@ -25,6 +25,15 @@
step: 0.05,
default: 0.5,
},
{
name: "ollama-url",
label: "URL",
type: "text",
width: 120,
description: "URL of the Ollama service",
default: "http://ollama:11434",
required: true,
},
],
category: [ "llm" ],
},

View file

@ -0,0 +1,13 @@
{
pattern: {
name: "triple-store-cassandra",
icon: "🖇🙋",
title: "Adds a Cassandra store configured to act as a triple store",
description: "GraphRAG processing needs a triple store. This pattern adds a Cassandra store, along with plumbing so that Cassandra is integrated with GraphRag indexing and querying.",
requires: ["pulsar", "trustgraph"],
features: ["cassandra", "triple-store"],
args: [],
category: ["knowledge-graph"],
},
module: "components/cassandra.jsonnet",
}

View file

@ -0,0 +1,13 @@
{
pattern: {
name: "triple-store-neo4j",
icon: "🖇🙋",
title: "Adds a Neo4j store configured to act as a triple store.",
description: "GraphRAG processing needs a triple store. This pattern adds a Cassandra store, along with plumbing so that Cassandra is integrated with GraphRag indexing and querying.",
requires: ["pulsar", "trustgraph"],
features: ["neo4j", "triple-store"],
args: [],
category: [ "knowledge-graph" ],
},
module: "components/neo4j.jsonnet",
}

View file

@ -7,41 +7,6 @@
requires: ["pulsar"],
features: ["trustgraph"],
args: [
{
name: "embeddings-model",
label: "Embeddings model",
type: "select",
description: "Embeddings model for sentence analysis",
options: [
{ id: "all-MiniLM-L6-v2", description: "all-MiniLM-L6-v2" },
],
default: "all-MiniLM-L6-v2",
required: true,
},
{
name: "graph-rag-entity-limit",
label: "GraphRAG entity query limit",
type: "integer",
description: "Limit on entities to fetch from vector store",
default: 50,
required: true,
},
{
name: "graph-rag-triple-limit",
label: "GraphRAG triple query limit",
type: "integer",
description: "Limit on triples to fetch from triple store",
default: 30,
required: true,
},
{
name: "graph-rag-max-subgraph-size",
label: "GraphRAG maximum subgraph size",
type: "integer",
description: "Limit on size of subgraph to present to text-completion model",
default: 3000,
required: true,
},
],
category: [ "foundation" ],
},