Skip to content

Release 2025-05-28a #6855

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 60 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
a12d163
Fix links from edb_otel to pg_exporter
tureba May 7, 2025
e43337b
Update monitoring_failover_manager.mdx
ToontjeM May 14, 2025
6026848
Card limiter added
djw-m May 15, 2025
a114d2f
Update index.mdx
pavanvd May 23, 2025
c98f1ef
Update index.mdx
matthew123987 May 26, 2025
f98d4da
Merge pull request #6843 from EnterpriseDB/matthew123987-patch-3
nidhibhammar May 27, 2025
f585cb8
Release notes stub added
djw-m May 22, 2025
a9bcafa
fix example KB name
timwaizenegger May 22, 2025
1c5d7d7
pgd fix rel note
timwaizenegger May 22, 2025
9bde92b
remove comment in yaml
timwaizenegger May 22, 2025
593e058
Fix missing spaces in code output
djw-m May 22, 2025
b0de5ad
update generated release notes
github-actions[bot] May 22, 2025
6db032f
add more chunk text primitive details
noahbaculi May 22, 2025
3d94d10
pgfs note
timwaizenegger May 23, 2025
0b07c62
update generated release notes
github-actions[bot] May 23, 2025
3cb0811
increase chunk text detail and change confusing examples
noahbaculi May 23, 2025
c6b14b5
Merge pull request #6840 from EnterpriseDB/pavanvd-patch-2
djw-m May 27, 2025
24e24d5
Fix for codeblocks - example/test in playground
djw-m May 22, 2025
dcbc476
more release notes for bug fixes
timwaizenegger May 27, 2025
a9fe031
update generated release notes
github-actions[bot] May 27, 2025
1b2b8e7
Merge pull request #6758 from tureba/patch-1
gvasquezvargas May 27, 2025
e0159a0
EPAS - RHEL 9 install topics fix as per DOCS-1546
nidhibhammar May 27, 2025
a490048
updated the command
nidhibhammar May 27, 2025
658177e
Fix counting and swapping for more.
djw-m May 27, 2025
474cfd1
beef up code output marker detection;
josh-heyer May 27, 2025
ec35984
Fix broken output blocks
josh-heyer May 27, 2025
590f682
setup for tools repo
josh-heyer May 28, 2025
f71ae03
Fix backtick position
tureba May 27, 2025
f659d72
PEM 10 - quick fixes for PEM_SERVER_PASSWORD and --pem-user
nidhibhammar May 27, 2025
decf745
Merge pull request #6833 from EnterpriseDB/DOCS-1560-__output__-conte…
djw-m May 28, 2025
d30b7ab
Fix links from edb_otel to pg_exporter
tureba May 7, 2025
5a96595
Update index.mdx
pavanvd May 23, 2025
b40dc8b
Update AIDB documentation based on AID-426 changes
iakinsey May 27, 2025
49d83b3
Merge pull request #6849 from tureba/patch-3
djw-m May 28, 2025
f3e6b72
Release notes stub added
djw-m May 22, 2025
206d835
fix example KB name
timwaizenegger May 22, 2025
2c4f75a
pgd fix rel note
timwaizenegger May 22, 2025
a008c3a
remove comment in yaml
timwaizenegger May 22, 2025
253ce6a
Fix missing spaces in code output
djw-m May 22, 2025
bbf17fc
update generated release notes
github-actions[bot] May 22, 2025
7c6903e
add more chunk text primitive details
noahbaculi May 22, 2025
fb51b0c
pgfs note
timwaizenegger May 23, 2025
6dcd774
update generated release notes
github-actions[bot] May 23, 2025
527422c
increase chunk text detail and change confusing examples
noahbaculi May 23, 2025
2fd51e2
more release notes for bug fixes
timwaizenegger May 27, 2025
440e9bd
update generated release notes
github-actions[bot] May 27, 2025
e05c612
Merge pull request #6808 from EnterpriseDB/ToontjeM-docs-update
nidhibhammar May 28, 2025
d8f5356
Merge pull request #6850 from EnterpriseDB/aidb-hcp-2
timwaizenegger May 28, 2025
c4e8185
Merge branch 'develop' into DOCS-1559--aidb-4-1-1-bugfix-release
timwaizenegger May 28, 2025
72457fb
Merge pull request #6845 from EnterpriseDB/content/docs/epas/rhel_ins…
nidhibhammar May 28, 2025
cfd29cf
Merge pull request #6846 from EnterpriseDB/content/docs/pem/10/pem_us…
nidhibhammar May 28, 2025
836fd06
Notes on PGD setup
timwaizenegger May 28, 2025
456b94b
Merge branch 'develop' into DOCS-1559--aidb-4-1-1-bugfix-release
timwaizenegger May 28, 2025
627b02e
Change from get_hcp_models to list_hcp_models
djw-m May 28, 2025
2fdf536
Update advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel…
djw-m May 28, 2025
9e9817d
update generated release notes
github-actions[bot] May 28, 2025
0d152e5
Merge pull request #6831 from EnterpriseDB/DOCS-1559--aidb-4-1-1-bugf…
djw-m May 28, 2025
bf8f73f
Merge pull request #6813 from EnterpriseDB/add-limit-to-index-cards
djw-m May 28, 2025
6ba8173
Add information about support expiration to release notes.
EFM-Bobby May 5, 2025
6eae959
Merge pull request #6748 from EnterpriseDB/efm/release-date-support
djw-m May 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .github/workflows/tools-events.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Forward key events to the docs-tools repository
on:
pull_request:
push:
create:
delete:
release:
jobs:
dispatch-events:
runs-on: ubuntu-latest
steps:
- name: Create event name
run: |
EVENT_PREFIX="docs-${GITHUB_REPOSITORY//\//-}"
echo EVENT_PREFIX="${EVENT_PREFIX@L}" >> $GITHUB_ENV
- name: Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.TOOLS_EVENT_SYNC_PAT }}
repository: enterprisedb/docs-tools
event-type: ${{ env.EVENT_PREFIX }}-${{ github.event_name }}
client-payload: |
{
"ref": "${{ github.head_ref || github.ref }}",
"ref_type": "${{ github.ref_type }}",
"ref_name": "${{ github.ref_name }}",
"repo": "${{ github.repository }}",
"sha": "${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}",
"type": "${{ github.event_name }}",
"push": {
"before": "${{ github.event.before || '' }}",
"after": "${{ github.event.after || '' }}",
"created": "${{ github.event.created || false }}",
"deleted": "${{ github.event.deleted || false }}"
},
"action": "${{ github.event.action }}",
"number": "${{ github.event.number }}",
"release": {
"tag_name": "${{ github.event.release && github.event.release.tag_name || '' }}",
"id": "${{ github.event.release && github.event.release.id || '' }}",
"tag": "${{ github.event.release && github.event.release.tag_name || '' }}",
"name": "${{ github.event.release && github.event.release.name || '' }}",
"body": "${{ github.event.release && github.event.release.body || '' }}",
"draft": "${{ github.event.release && github.event.release.draft || false }}"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,37 @@ The AI Database extension provides a set of functions to run AI/ML models in the

```sql
ebd=# CREATE EXTENSION aidb CASCADE;
__OUTPUT__
NOTICE: installing required extension "vector"
CREATE EXTENSION
edb=#
```

#### Additional steps for EDB Postgres Distributed (PGD)
A manual step is required to set up replication within the PGD cluster for the AIDB extension catalog tables:

```sql
bdrdb=# SELECT aidb.bdr_setup();
__OUTPUT__
bdr_setup
-----------

(1 row)
```

You can confirm that the AIDB tables are part of the desired replication set using this SQL command:
```sql
bdrdb=# select * from bdr.tables where nspname='aidb';
__OUTPUT__
relid | nspname | relname | set_name | set_ops | rel_columns | row_filter | conflict_detection
-------+---------+---------------------------------------+----------------+---------------------------------+-------------+------------+--------------------
18281 | aidb | pipeline_runtime_state | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18354 | aidb | preparer_registry | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18363 | aidb | preparer_registry_source_table | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18375 | aidb | preparer_registry_source_volume | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18430 | aidb | knowledge_base_registry | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18440 | aidb | knowledge_base_registry_source_table | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
18452 | aidb | knowledge_base_registry_source_volume | p-2y7357q195-a | {INSERT,UPDATE,DELETE,TRUNCATE} | | | row_origin
(7 rows)
```

#### Setting up background workers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ INSERT INTO test_data_10k (id, msg) SELECT generate_series(1, 10000) AS id, 'hel
The optimal batch size may be very different for different models. Measure and tune the batch size for each different model you want to use.
```sql
SELECT aidb.create_table_knowledge_base(
name => 'perf_test_b',
name => 'perf_test',
model_name => 'dummy', -- use the model you want to optimize for
source_table => 'test_data_10k',
source_data_column => 'msg',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ A view is available that lists all the knowledge_bases. [aidb.knowledge_bases](.
```sql
SELECT * FROM aidb.knowledge_bases;
__OUTPUT__
id | name | vector_table_name | vector_table_key_column | vector_table_vector_column | model_name | topk | distance_operator | options | source_table_name | source_table_data_column | source_table_data_column_type | source_table_key_column | source_volume_name
----+---------------------+----------------------------+-------------------------+----------------------------+--------------+------+-------------------+---------+-------------------+--------------------------+-------------------------------+-------------------------+--------------------
id | name | vector_table_name | vector_table_key_column | vector_table_vector_column | model_name | topk | distance_operator | options | source_table_name | source_table_data_column | source_table_data_column_type | source_table_key_column | source_volume_name
----+--------------------------+---------------------------------+-------------------------+----------------------------+--------------+------+-------------------+---------+-------------------+--------------------------+-------------------------------+-------------------------+--------------------
2 | test_knowledge_base | test_knowledge_base_vector | id | embeddings | simple_model | 5 | InnerProduct | {} | test_source_table | content | Text | id |
5 | test_knowledge_base_cosa | test_knowledge_base_cosa_vector | id | embeddings | simple_model | 1 | L2 | {} | test_source_table | content | Text | id |
3 | test_knowledge_base_cos | test_knowledge_base_cos_vector | id | embeddings | simple_model | 5 | Cosine | {} | test_source_table | content | Text | id |
Expand All @@ -170,8 +170,8 @@ We recommend that you select only the columns you're interested in:
```sql
SELECT name, source_table_name FROM aidb.knowledge_bases;
__OUTPUT__
name | source_table_name
---------------------+-------------------
name | source_table_name
--------------------------+-------------------
test_knowledge_base | test_source_table
test_knowledge_base_cos | test_source_table
test_knowledge_base_cosa | test_source_table
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ SELECT aidb.create_table_preparer(
destination_table => 'chunked_data__1321',
destination_data_column => 'chunk',
destination_key_column => 'id',
options => '{"desired_length": 1, "max_length": 1000}'::JSONB -- Configuration for the ChunkText operation
options => '{"desired_length": 1000}'::JSONB -- Configuration for the ChunkText operation
);
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,6 @@ __OUTPUT__
(9 rows)
```

```sql
-- Semantic chunking to split into the largest continuous semantic chunk that fits in the max_length
SELECT * FROM aidb.chunk_text('This sentence should be its own chunk. This too.', '{"desired_length": 1, "max_length": 1000}');

__OUTPUT__
part_id | chunk
---------+----------------------------------------
0 | This sentence should be its own chunk.
1 | This too.
(2 rows)
```

## Preparer with table data source

```sql
Expand All @@ -83,7 +71,7 @@ CREATE TABLE source_table__1628
);
INSERT INTO source_table__1628
VALUES (1, 'This is a significantly longer text example that might require splitting into smaller chunks. The purpose of this function is to partition text data into segments of a specified maximum length, for example, this sentence 145 is characters. This enables processing or storage of data in manageable parts.'),
(2, 'This sentence should be its own chunk. This too.');
(2, 'This is sentence number one. This is sentence number one.');

SELECT aidb.create_table_preparer(
name => 'preparer__1628',
Expand All @@ -94,20 +82,19 @@ SELECT aidb.create_table_preparer(
destination_data_column => 'chunks',
source_key_column => 'id',
destination_key_column => 'id',
options => '{"desired_length": 1, "max_length": 1000}'::JSONB -- Configuration for the ChunkText operation
options => '{"desired_length": 120}'::JSONB -- Configuration for the ChunkText operation
);

SELECT aidb.bulk_data_preparation('preparer__1628');

SELECT * FROM chunked_data__1628;

__OUTPUT__
id | part_id | unique_id | chunks
----+---------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------
id | part_id | unique_id | chunks
----+---------+-----------+-----------------------------------------------------------------------------------------------------------------------
1 | 0 | 1.part.0 | This is a significantly longer text example that might require splitting into smaller chunks.
1 | 1 | 1.part.1 | The purpose of this function is to partition text data into segments of a specified maximum length, for example, this sentence 145 is characters.
1 | 2 | 1.part.2 | This enables processing or storage of data in manageable parts.
2 | 0 | 2.part.0 | This sentence should be its own chunk.
2 | 1 | 2.part.1 | This too.
(5 rows)
1 | 1 | 1.part.1 | The purpose of this function is to partition text data into segments of a specified maximum length, for example, this
1 | 2 | 1.part.2 | sentence 145 is characters. This enables processing or storage of data in manageable parts.
2 | 0 | 2.part.0 | This is sentence number one. This is sentence number one.
(4 rows)
```
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SELECT aidb.create_table_preparer(
destination_data_column => 'chunk',
source_key_column => 'id',
destination_key_column => 'id',
options => '{"desired_length": 1, "max_length": 1000}'::JSONB -- Configuration for the ChunkText operation
options => '{"desired_length": 1000}'::JSONB -- Configuration for the ChunkText operation
);

SELECT aidb.set_auto_preparer('preparer__1628', 'Live');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ All data preparation operations can be customized with different options. The AP

## Chunk text

Call `aidb.chunk_text()` to break text into smaller chunks.
Call `aidb.chunk_text()` to intelligently split long text into smaller, semantically coherent chunks, ideal for processing or storage within LLM context limits.

```sql
SELECT * FROM aidb.chunk_text(
Expand All @@ -31,8 +31,18 @@ __OUTPUT__
(3 rows)
```

- The `desired_length` size is the target size for the chunk. In most cases, this value also serves as the maximum size of the chunk. It's possible for a chunk to be returned that's less than the `desired` value, as adding the next piece of text may have made it larger than the `desired` capacity.
- The `max_length` size is the maximum possible chunk size that can be generated. Setting this to a value larger than `desired` means that the chunk should be as close to `desired` as possible but can be larger if it means staying at a larger semantic level.
### Options

- `desired_length` (required): The target chunk size, in characters. This is the size the splitter will try to reach when forming each chunk, while preserving semantic structure. If `max_length` is not provided, `desired_length` also acts as the hard upper limit for the chunk size.
- `max_length` (optional): The upper bound for chunk size, in characters. If specified, the function will try to generate chunks close to `desired_length` but may extend up to `max_length` to preserve larger semantic units (like full sentences or paragraphs). Chunks will only exceed `desired_length` when it's necessary to avoid cutting across meaningful boundaries.
- Specifying `desired_length = max_length` results in fixed-size chunks (e.g., when filling a context window exactly for embeddings).
- Use a larger `max_length` if you want to stay within a soft limit but allow some flexibility to preserve higher semantic units, common in RAG, summarization, or Q&A applications.

### Algorithm Summary

- Text is split using a hierarchy of semantic boundaries: characters, graphemes, words, sentences, and increasingly long newline sequences (e.g., paragraphs).
- The splitter attempts to form the largest semantically valid chunk that fits within the specified size range.
- Chunks may be returned that are shorter than `desired_length` if adding the next semantic unit would exceed max_length.

!!! Tip
This operation transforms the shape of the data, automatically unnesting collections by introducing a `part_id` column. See the [unnesting concept](./concepts#unnesting) for more detail.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ SELECT aidb.create_volume_preparer(
operation => 'ChunkText',
source_volume_name => 'text_files_volume',
destination_table => 'chunk_output_volume',
options => '{"desired_length": 1, "max_length": 100}'::JSONB
options => '{"desired_length": 1000}'::JSONB
);

SELECT aidb.bulk_data_preparation('chunking_example_volumes');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@ navigation:
* [aidb.create_model](models#aidbcreate_model)
* [aidb.get_model](models#aidbget_model)
* [aidb.delete_model](models#aidbdelete_model)
* [aidb.get_hcp_models](models#aidbget_hcp_models)
* [aidb.list_hcp_models](models#aidblist_hcp_models)
* [aidb.create_hcp_model](models#aidbcreate_hcp_model)
* [aidb.sync_hcp_models](models#aidbsync_hcp_models)
* [aidb.encode_text](models#aidbencode_text)
* [aidb.encode_text_batch](models#aidbencode_text_batch)
* [aidb.decode_text](models#aidbdecode_text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ __OUTPUT__
| `delete_model` | jsonb | The name, provider, and options of the deleted model |


### `aidb.get_hcp_models`
### `aidb.list_hcp_models`

Gets models running on the hybrid control plane.

Expand Down Expand Up @@ -194,6 +194,19 @@ Creates a new model in the system by referencing a running instance in the HCP
| `name` | text | | User-defined name of the model |
| `hcp_model_name` | text | | Name of the model instance running on HCP |

### `aidb.sync_hcp_models`

Creates models in the HCP and sets `is_hcp_model=true`; deletes models with that setting if not found in the HCP.

#### Returns

| Column | Type | Description |
| -------- | ---- | ------------------------------------------------------------------------------- |
| `status` | text | Synchronization status; either `deleted`, `unchanged`, `created`, or `skipped`. |
| `model` | text | The name the synchronized HCP model. |



### `aidb.encode_text`

Encodes text using a model, generating a vector representation of a given text input.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: AI Accelerator - Pipelines 4.1.1 release notes
navTitle: Version 4.1.1
originalFilePath: advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_4.1.1.yml
editTarget: originalFilePath
---

Released: 28 May 2025

This is a minor release that includes bug fixes.
Note: this release depends on the new PGFS version 2.0.2. If you're using PGFS together with AIDB, please update PGFS as well.

## Highlights

- Bug fixes and UX enhancements.

## Enhancements

<table class="table w-100"><thead><tr><th>Description</th><th width="10%">Addresses</th></tr></thead><tbody>
<tr><td><details><summary>Change the tracking of &quot;run IDs&quot; for volume knowledge bases from a PG sequence to a PG table column</summary><hr/><p>Knowledge bases with volume source need to assign an incrementing ID to each listing done on the source.
This is necessary to detect when a listing is complete and recognize which previously seen objects were not encountered any more.
In this release the method for tracking run IDs is changed to a table column since the Postgres sequence used before did not
work on Postgres Distributed (PGD) clusters.</p>
</details></td><td></td></tr>
<tr><td><details><summary>Support AIDB volumes in arbitrary Postgres schemas</summary><hr/><p>Volumes for AIDB can be created in arbitrary schemas in Postgres either by exlicitly passing a schema to the create function, or by
setting a &quot;current schema&quot; via the search path. When using volumes in AIDB pipelines, the volume reference needs to be stored.
AIDB will now store and explicitly use a schema when later executing a pipeline. Previously, the search path was used to find volumes.</p>
</details></td><td></td></tr>
<tr><td><details><summary>Background worker dispatcher is no longer persistent</summary><hr/><p>When background workers are enabled for AIDB, a root-worker will start a database dispatcher for each database within the Postgres instance.
This database dispatcher checks if AIDB is installed in the DB and if any pipelines need to be run in the background.
The database dispatcher is now no longer a permanent process by default. When a database does not use AIDB, the database dispatcher
exits and will be re-started to check for AIDB every 2 minutes.
This avoids holding a permanent connection to the DB that would block e.g. &quot;drop table&quot; commands.
If AIDB is installed in the DB, then the database dispatcher worker will keep running. Users can drop the extension in order to release the connection.</p>
</details></td><td></td></tr>
</tbody></table>


Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ navTitle: Release notes
description: Release notes for EDB Postgres AI - AI Accelerator
indexCards: none
navigation:
- ai-accelerator_4.1.1_rel_notes
- ai-accelerator_4.1.0_rel_notes
- ai-accelerator_4.0.1_rel_notes
- ai-accelerator_4.0.0_rel_notes
Expand All @@ -23,6 +24,7 @@ The EDB Postgres AI - AI Accelerator describes the latest version of AI Accelera

| AI Accelerator version | Release Date |
|---|---|
| [4.1.1](./ai-accelerator_4.1.1_rel_notes) | 28 May 2025 |
| [4.1.0](./ai-accelerator_4.1.0_rel_notes) | 19 May 2025 |
| [4.0.1](./ai-accelerator_4.0.1_rel_notes) | 09 May 2025 |
| [4.0.0](./ai-accelerator_4.0.0_rel_notes) | 05 May 2025 |
Expand Down
Loading
Loading