diff --git a/assets/css/index.css b/assets/css/index.css index d07195508e..7ec365c0c0 100644 --- a/assets/css/index.css +++ b/assets/css/index.css @@ -129,7 +129,11 @@ section.prose { } .context-map-shape { - @apply fill-white stroke-redis-red-500; + @apply fill-white; + /* Red-to-grey diagonal gradient (defined in context-map.js), matching the + node border on the mermaid-derived diagrams elsewhere on these pages + (mermaid's "neo" look), not the flat brand redis-red-500. */ + stroke: url(#context-map-border-gradient); stroke-width: 1; transition: fill 0.15s ease, stroke 0.15s ease; } @@ -144,12 +148,13 @@ section.prose { } .context-map-node.is-hovered .context-map-shape { - @apply stroke-redis-red-500; + stroke: url(#context-map-border-gradient); stroke-width: 2; } .context-map-node.is-selected .context-map-shape { - @apply fill-red-50 stroke-redis-red-500; + @apply fill-red-50; + stroke: url(#context-map-border-gradient); stroke-width: 2; } @@ -184,7 +189,7 @@ section.prose { } .context-map-node:focus-visible .context-map-shape { - @apply stroke-redis-red-500; + stroke: url(#context-map-border-gradient); stroke-width: 2; } diff --git a/content/develop/ai/context-engine/agent-memory/overview.md b/content/develop/ai/context-engine/agent-memory/overview.md index ddcc1a4ab0..7e494271db 100644 --- a/content/develop/ai/context-engine/agent-memory/overview.md +++ b/content/develop/ai/context-engine/agent-memory/overview.md @@ -18,12 +18,7 @@ Agent Memory has two writers. Your application writes session events as they hap - **Summarizes** older events into a compact summary once the session passes a configured threshold, so a long conversation doesn't blow the model's context window. - **Extracts** long-term memories, facts and preferences worth keeping, and writes them as separate, searchable records with vector embeddings. -```mermaid {width="80%"} -graph LR - A["Application"] -->|"Add session event
(synchronous)"| B["Session memory"] - B -.->|"Background
extraction"| C["Long-term memory"] - A -->|"Search"| C -``` +{{< image filename="images/ai/context-engine/agent-memory-writers.svg" alt="An application writes session events synchronously to session memory. Background extraction moves durable information into long-term memory, which the application can search directly." width="700" >}} Both run asynchronously, to keep session writes fast. Extraction also weighs a new memory against existing memories before writing it. Rather than rejecting anything that looks similar, it uses model judgment to decide whether a near-identical memory is a true duplicate or is meaningfully different and worth keeping too. diff --git a/content/develop/ai/context-engine/concepts/_index.md b/content/develop/ai/context-engine/concepts/_index.md index b46afcc03d..58c6c60fe5 100644 --- a/content/develop/ai/context-engine/concepts/_index.md +++ b/content/develop/ai/context-engine/concepts/_index.md @@ -16,20 +16,7 @@ Redis Iris sits between your agent and your data. It's one system. Your agent as Use Redis Iris when you want agents to respond with cached answers instead of repeat model calls, recall what they've learned across turns and sessions, and act on live business data. Iris builds and maintains that infrastructure for you. -```mermaid {width="90%"} -graph TD - subgraph iris["Redis Iris"] - A["Store memories"] - B["Cache answers"] - C["Retrieve context"] - end - Agent["Agent"] <--> iris - A --> D[("Reach Redis or any connected database")] - B --> D - C --> D - style D width:320px - style iris fill:#ffffff -``` +{{< image filename="images/ai/context-engine/iris-mental-model.svg" alt="An agent connects to Redis Iris, which stores memories, caches answers, and retrieves context, all backed by Redis or a connected database." width="650" >}} ## The mental model diff --git a/content/develop/ai/context-engine/context-retriever/concepts.md b/content/develop/ai/context-engine/context-retriever/concepts.md index 7e178258a8..5168c195b0 100644 --- a/content/develop/ai/context-engine/context-retriever/concepts.md +++ b/content/develop/ai/context-engine/context-retriever/concepts.md @@ -15,12 +15,7 @@ weight: 3 Context Retriever gives an agent a fixed, predefined set of callable tools to use instead of direct query access. Your database, its schema, and its own access controls stay unchanged. Context Retriever sits between the agent and that database, as an added layer. -```mermaid {width="60%"} -graph TD - Agent["Agent"] <-->|"MCP tools"| CR["Context Retriever"] - CR --> D[("Database")] - style D width:320px -``` +{{< image filename="images/ai/context-engine/context-retriever-layer.svg" alt="An agent calls Context Retriever through MCP tools, and Context Retriever queries the database." width="160" >}} ## Direct data access vs. governed tool-calling diff --git a/content/develop/ai/context-engine/data-integration/_index.md b/content/develop/ai/context-engine/data-integration/_index.md index 3db3679831..42e2e6949f 100644 --- a/content/develop/ai/context-engine/data-integration/_index.md +++ b/content/develop/ai/context-engine/data-integration/_index.md @@ -69,12 +69,7 @@ RDI pipelines run in two phases: - **Initial sync**: Reads a full snapshot of your source data and loads it into the target Redis database. - **Streaming**: Captures changes as they happen and applies them to Redis within seconds of the source change. -```mermaid {width="70%"} -flowchart LR - A[(Source database)] -->|Initial sync| B[(Redis)] - A -->|CDC stream| B - B --> C[Agent] -``` +{{< image filename="images/ai/context-engine/rdi-sync-flow.svg" alt="A source database syncs to Redis through an initial sync and a continuous CDC stream. Redis serves the agent." width="500" >}} Data is transformed from relational rows into Redis hashes or JSON documents as part of the pipeline, with no coding required. You define what data to sync and how to map it using configuration, and RDI handles the rest. diff --git a/content/develop/ai/context-engine/langcache/concepts.md b/content/develop/ai/context-engine/langcache/concepts.md index 6f0c0709c9..246cc46d63 100644 --- a/content/develop/ai/context-engine/langcache/concepts.md +++ b/content/develop/ai/context-engine/langcache/concepts.md @@ -15,14 +15,7 @@ weight: 3 LangCache matches an incoming prompt against stored entries by similarity, not exact text, so two prompts that are close enough are treated as the same request. This similarity match lets *What are Product A's features?* and *Tell me about Product A's capabilities* share a cached response. -```mermaid {width="90%"} -graph LR - A["Incoming prompt"] --> B{"Similarity above
threshold?"} - B -->|Yes| C(["Return cached response
(milliseconds)"]) - B -->|No| D["Call the LLM"] - D --> E["Store prompt and response
as a new cache entry"] - E --> F(["Return the LLM response"]) -``` +{{< image filename="images/ai/context-engine/langcache-semantic-flow.svg" alt="An incoming prompt is checked against a similarity threshold. A match returns a cached response in milliseconds. A miss calls the LLM, stores the prompt and response as a new cache entry, then returns the LLM response." width="850" >}} If you've used a traditional, exact-key cache before, similarity matching behaves differently from what you're used to. Semantic caching gives up the guarantee that a cache hit is always correct, in exchange for the ability to match paraphrased or related questions. That trade-off is what makes the cache useful for an agent. Users and agents rarely phrase the same request the same way twice. Matching by meaning, instead of exact text, turns repeat requests into fast, cache-served responses. diff --git a/content/operate/iris/agent-memory/create-service.md b/content/operate/iris/agent-memory/create-service.md index f16b2c6d00..331f9f6c50 100644 --- a/content/operate/iris/agent-memory/create-service.md +++ b/content/operate/iris/agent-memory/create-service.md @@ -45,7 +45,7 @@ From here: After Redis Cloud creates your Agent Memory service, a window containing your Agent Memory service key will appear. Select **Copy** to copy the key to your clipboard. - {{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} + {{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} {{}} This is the only time the value of the user key is available. Save it to a secure location before closing the dialog box.

@@ -236,7 +236,7 @@ When you are done setting the details of your Agent Memory service, select **Cre A window containing your Agent Memory service key will appear. Select **Copy** to copy the key to your clipboard. -{{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} +{{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} {{}} This is the only time the value of the user key is available. Save it to a secure location before closing the dialog box.

diff --git a/content/operate/iris/agent-memory/view-service.md b/content/operate/iris/agent-memory/view-service.md index 0f82fae1e4..e03d93e1ca 100644 --- a/content/operate/iris/agent-memory/view-service.md +++ b/content/operate/iris/agent-memory/view-service.md @@ -181,13 +181,13 @@ To generate a new service key: 1. Enter a new name for your API key. - {{The Add API key window.}} + {{The Add API key window.}} 1. Select **Generate key** to generate your new API key. 1. The new key will appear in a dialog box. Select **Copy** to copy the key to the clipboard. - {{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} + {{The Agent Memory service key window. Use the Copy button to save the service key to the clipboard.}} {{}} This is the only time the value of the user key is available. Save it to a secure location before closing the dialog box.

diff --git a/content/operate/iris/context-retriever/view-admin-keys.md b/content/operate/iris/context-retriever/view-admin-keys.md index 6387bdee72..99bdbb1436 100644 --- a/content/operate/iris/context-retriever/view-admin-keys.md +++ b/content/operate/iris/context-retriever/view-admin-keys.md @@ -41,13 +41,13 @@ To generate a new admin key: 1. Enter a name for your admin key. - {{The Add admin key window.}} + {{The Add admin key window.}} 1. Select **Generate key** to generate your new admin key. 1. The new key will appear in a dialog box. Select **Copy** to copy the key to the clipboard. - {{The Context Retriever admin key window. Use the Copy button to save the admin key to the clipboard.}} + {{The Context Retriever admin key window. Use the Copy button to save the admin key to the clipboard.}} {{}} This is the only time the value of the admin key is available. Save it to a secure location before closing the dialog box.

diff --git a/content/operate/iris/langcache/create-service.md b/content/operate/iris/langcache/create-service.md index c7d4194a92..6b245fd8f9 100644 --- a/content/operate/iris/langcache/create-service.md +++ b/content/operate/iris/langcache/create-service.md @@ -47,7 +47,7 @@ From here: After Redis Cloud creates your LangCache service, a window containing your LangCache service key will appear. Select **Copy** to copy the key to your clipboard. - {{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} + {{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} {{}} This is the only time the value of the user key is available. Save it to a secure location before closing the dialog box.

@@ -132,7 +132,7 @@ When you are done setting the details of your LangCache service, select **Create A window containing your LangCache service key will appear. Select **Copy** to copy the key to your clipboard. -{{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} +{{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} {{}} This is the only time the value of the user key is available. Save it to a secure location before closing the dialog box.

diff --git a/content/operate/iris/langcache/view-edit-cache.md b/content/operate/iris/langcache/view-edit-cache.md index db3db6372a..27c57da129 100644 --- a/content/operate/iris/langcache/view-edit-cache.md +++ b/content/operate/iris/langcache/view-edit-cache.md @@ -60,7 +60,7 @@ To generate a new service key: 1. The new key will appear in a dialog box. Select **Copy** to copy the key to the clipboard. - {{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} + {{The LangCache service key window. Use the Copy button to save the service key to the clipboard.}} {{}} After you generate a new service key, calls to the LangCache API with the old key will fail.

diff --git a/static/images/ai/context-engine/agent-memory-writers.svg b/static/images/ai/context-engine/agent-memory-writers.svg new file mode 100644 index 0000000000..7dbb0575a7 --- /dev/null +++ b/static/images/ai/context-engine/agent-memory-writers.svg @@ -0,0 +1 @@ +

Add session event
(synchronous)

Background
extraction

Search

Application

Session memory

Long-term memory

\ No newline at end of file diff --git a/static/images/ai/context-engine/context-retriever-layer.svg b/static/images/ai/context-engine/context-retriever-layer.svg new file mode 100644 index 0000000000..4618341e2f --- /dev/null +++ b/static/images/ai/context-engine/context-retriever-layer.svg @@ -0,0 +1 @@ +

MCP tools

Agent

Context Retriever

Database

\ No newline at end of file diff --git a/static/images/ai/context-engine/iris-mental-model.svg b/static/images/ai/context-engine/iris-mental-model.svg new file mode 100644 index 0000000000..2117415ff5 --- /dev/null +++ b/static/images/ai/context-engine/iris-mental-model.svg @@ -0,0 +1 @@ +

Redis Iris

Store memories

Cache answers

Retrieve context

Agent

Reach Redis or any connected database

\ No newline at end of file diff --git a/static/images/ai/context-engine/langcache-semantic-flow.svg b/static/images/ai/context-engine/langcache-semantic-flow.svg new file mode 100644 index 0000000000..2c9e10c1e0 --- /dev/null +++ b/static/images/ai/context-engine/langcache-semantic-flow.svg @@ -0,0 +1 @@ +

Yes

No

Incoming prompt

Similarity above
threshold?

Return cached response
(milliseconds)

Call the LLM

Store prompt and response
as a new cache entry

Return the LLM response

\ No newline at end of file diff --git a/static/images/ai/context-engine/rdi-sync-flow.svg b/static/images/ai/context-engine/rdi-sync-flow.svg new file mode 100644 index 0000000000..5eefb2690b --- /dev/null +++ b/static/images/ai/context-engine/rdi-sync-flow.svg @@ -0,0 +1 @@ +

Initial sync

CDC stream

Source database

Redis

Agent

\ No newline at end of file diff --git a/static/js/context-map.js b/static/js/context-map.js index 6ad96c9534..9f36f3f986 100644 --- a/static/js/context-map.js +++ b/static/js/context-map.js @@ -368,6 +368,19 @@ activeMarker.appendChild(activeArrowPath); defs.appendChild(activeMarker); + // Red-to-grey diagonal border, matching the node stroke on the mermaid-derived + // diagrams elsewhere on these pages (mermaid's "neo" look gradient). + const borderGradient = svgEl('linearGradient', { + id: 'context-map-border-gradient', + gradientUnits: 'objectBoundingBox', + x1: '0%', y1: '0%', x2: '100%', y2: '0%' + }); + const borderGradientStart = svgEl('stop', { offset: '0%', 'stop-color': '#ee0000', 'stop-opacity': '1' }); + const borderGradientEnd = svgEl('stop', { offset: '100%', 'stop-color': '#e5e5e5', 'stop-opacity': '1' }); + borderGradient.appendChild(borderGradientStart); + borderGradient.appendChild(borderGradientEnd); + defs.appendChild(borderGradient); + svg.appendChild(defs); // Draw edges first so node shapes render on top of their stubs.