diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/capabilities.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/capabilities.mdx new file mode 100644 index 00000000000..5cddec640eb --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/capabilities.mdx @@ -0,0 +1,5 @@ +--- +title: "Capabilities" +navTitle: "Capabilities" +description: "Capabilities of the EDB Postgres AI - AI Accelerator Pipelines" +--- diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/compatibility.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/compatibility.mdx new file mode 100644 index 00000000000..4b3a88a6a86 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/compatibility.mdx @@ -0,0 +1,29 @@ +--- +title: Compatibility +navTitle: Compatibility +description: Compatibility information for the EDB Postgres AI - AI Accelerator Pipelines. +--- + +## Supported platforms + +### aidb + +* Ubuntu 22.04LTS on X86/64 +* Debian 12 (Bookworm) on X86/64 + +### pgfs + +* Ubuntu 22.04LTS on X86/64 +* Debian 12 (Bookworm) on X86/64 + +## Not currently supported + +* Redhat/RHEL 9/8 on X86/64 +* ARM architectures +* SLES +* Debian before the current version 12 +* Ubuntu 24.04LTS +* Non-Linux platforms + + + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/gettingstarted/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/gettingstarted/index.mdx new file mode 100644 index 00000000000..d7d44ff3cec --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/gettingstarted/index.mdx @@ -0,0 +1,20 @@ +--- +title: "Getting Started with Pipelines" +navTitle: "Getting Started" +description: "How to get started with AI Accelerator Pipelines." +--- + +## Where to Start + +The best place to start is with the [Pipelines Overview](/edb-postgres-ai/ai-accelerator/overview) to get an understanding of what Pipelines is and how it works. + +## Installation + +Pipelines is included with the EDB Postgres AI - AI Accelerator suite of tools. To install Pipelines, follow the instructions in the [AI Accelerator Installation Guide](/edb-postgres-ai/ai-accelerator/installing). + +## Using Pipelines + +Once you have Pipelines installed, you can start using it to work with your AI data. + +###TODO + diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/images/aidb-overview-withbackground.png b/advocacy_docs/edb-postgres-ai/ai-accelerator/images/aidb-overview-withbackground.png similarity index 100% rename from advocacy_docs/edb-postgres-ai/ai-ml/images/aidb-overview-withbackground.png rename to advocacy_docs/edb-postgres-ai/ai-accelerator/images/aidb-overview-withbackground.png diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/index.mdx new file mode 100644 index 00000000000..97f75aa080d --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/index.mdx @@ -0,0 +1,32 @@ +--- +title: "EDB Postgres AI - AI Accelerator" +navTitle: "AI Accelerator" +directoryDefaults: + product: "EDB Postgres AI" + iconName: BrainCircuit +indexCards: simple +description: "All about the EDB Postgres AI - AI Accelerator suite of tools including Pipelines and PGvector." +navigation: +- overview +- gettingstarted +- "#Introducing Pipelines" +- pipelines-overview +- capabilities +- compatibility +- installing +- "#Piplelines components" +- models +- retrievers +- pgfs +- "#Pipelines resources" +- reference +- rel_notes +- limitations +- licenses +- "#Other components" +- pgvector +redirects: +- /edb-postgres-ai/ai-ml/ +--- + +As part of the EDB Postgres AI platform, Pipelines abstracts away the complexity of working with AI data. It transforms Postgres into a powerful platform for AI data management, as it combines vector search from PGvector with automation for complex AI workflows. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/complete.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/complete.mdx new file mode 100644 index 00000000000..3dadcc0e622 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/complete.mdx @@ -0,0 +1,42 @@ +--- +title: "Completing and verifying the extension installation" +navTitle: "Completing the installation" +description: "Completing and verifying the installation of the AI Database and File System extensions." +--- + +### Installing the AI Database extension + +The AI Database extension is an extension that provides a set of functions to run AI/ML models in the database. The extension is installed using the `CREATE EXTENSION` command. + +```sql +ebd=# CREATE EXTENSION aidb CASCADE; +NOTICE: installing required extension "vector" +CREATE EXTENSION +edb=# +``` + +### Installing the File System extension + +The File System extension is an extension that provides a set of functions to interact with the file system from within the database. The extension is installed using the `CREATE EXTENSION` command. + +```sql +edb=# create extension pgfs; +CREATE EXTENSION +``` + +### Validating the installation + +You can check the extensions have been installed by running the `\dx` command in `psql`. + +```sql +edb=# \dx +__OUTPUT__ + List of installed extensions + Name | Version | Schema | Description +------------------+---------+------------+------------------------------------------------------------ + aidb | 1.0.1 | aidb | aidb: makes it easy to build AI applications with postgres + pgfs | 1.0.2 | pgfs | pgfs: enables access to filesystem-like storage locations + vector | 0.7.4 | public | vector data type and ivfflat and hnsw access methods +``` + +Typically, there will be other extensions listed in this view. The `aidb`, `pgfs`, and `vector` extensions should be listed. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/index.mdx new file mode 100644 index 00000000000..7df0a19b640 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/index.mdx @@ -0,0 +1,15 @@ +--- +title: "Installing AI Accelerator Pipelines" +navTitle: "Installing" +description: "How to install AI Accelerator Pipelines." +navigation: +- packages +- complete +--- + +Pipelines is delivered as a set of extensions. Depending on how you are deploying Pipelines, these extensions may be installed by your deployment platform (such as EDB Cloud Service) or if you deploy your own Postgres server, you will need to install them manually. + +- [Manually installing pipelines packages](packages) + +Once the packages are installed, you can [complete the installation](complete) by activating the extensions within Postgres. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/packages.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/packages.mdx new file mode 100644 index 00000000000..44cdb21048b --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/installing/packages.mdx @@ -0,0 +1,75 @@ +--- +title: "AI Accelerator - Pipelines" +navTitle: "Installing packages" +description: "How to install the aidb and PGFS extensions from packages." +prevNext: true +--- + +## Installing the extension packages + +There are three extension packages that are required to use the AI Accelerator Pipelines: + +- `aidb` - The AI Database extension +- `pgfs` - The PGFS (Postgres File System) extension +- `vector` - The PGvector extension + +### Prerequisite + +This guide assumes you have a PostgreSQL server running. You can install AI Accelerator Pipelines on a Community PostgreSQL server, an EDB Postgres Advanced Server, or an EDB Postgres Extended server. Consult the installation guides for those products if you need help setting up a server. When you install the server, make a note of the package name used as it will be needed to install the AI Accelerator Pipelines packages. + +- For Community PostgreSQL, the package name is `postgresql-`. +- For EDB Postgres Advanced Server, the package name is `edb-as` followed by `-server`. +- For EDB Postgres Extended, the package name is `edb-postgresextended-` followed by `-server`. + +Once you have established the package name, you can install the server using the package manager for your operating system. + +### Installing the packages + +Once the server is running, there will be a number of packages that need to be installed. The packages are available in the EDB repository, and can be installed using the appropriate package manager for your operating system. You will need to use either: + +- `apt` for Debian/Ubuntu based systems with .deb packages +- `dnf` for Red Hat based systems with .rpm packages + +Depending on your operating system. The packages are: + +#### For Community PostgreSQL + +- `edb-pg-aidb` - The AI Database extension +- `edb-pg-pgfs` - The File System extension + +and for the Vector extension either: + +- rpm-based systems: `edb-pg-pgvector0` +- deb-based systems: `edb-pg-pgvector-0` + +#### For EDB Postgres Advanced Server + +- `edb-as-aidb` - The AI Database extension +- `edb-as-pgfs` - The File System extension + +and for the Vector extension either: + +- rpm-based systems: `edb-as-pgvector0` +- deb-based systems: `edb-as-pgvector-0` + +#### For EDB Postgres Extended + +- `edb-pgextended--aidb` - The AI Database extension +- `edb-pgextended--pgfs` - The File System extension + +and for the Vector extension either: + +- rpm-based systems: `edb-postgresextended-pgvector0` +- deb-based systems: `edb-postgresextended-pgvector-0` + + +!!! Note Example +Installing the packages on Ubuntu 22.04, with EDB Postgres Advanced Server 16 would look like this: + +```shell +sudo apt-get install edb-as16-aidb edb-as16-pgfs edb-as16-pgvector-0 +``` + +With the packages installed, you can now connect to the database and [complete the installation the extensions in Postgres](complete). + +!!! diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/licenses.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/licenses.mdx new file mode 100644 index 00000000000..9d9d91fe3fe --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/licenses.mdx @@ -0,0 +1,2250 @@ +--- +title: "Open Source Licenses for software incorporated in EDB Postgres AI - AI Accelerator - Pipelines" +navTitle: "Licenses" +description: "Open Source Licenses for software incorporated in EDB Postgres AI - AI Accelerator - Pipelines, by package and licese." +--- + +## License Summary + +The following table lists the licenses for the software incorporated in EDB Postgres AI - AI Accelerator - Pipelines. + +- MIT +- Apache 2.0 +- Apache 2.0 with Exceptions +- BSD Two Clause +- BSD Three Clause +- ICSL +- OpenSSL +- zlib +- Mozilla Public License 2.0 +- Unicode DFS 2016 +- Unicode 3.0 +- Univ of Illinois/NCSA + +## License Details by Package + +- accelerate-src 0.3.2: [https://github.com/blas-lapack-rs/accelerate-src](https://github.com/blas-lapack-rs/accelerate-src) : (MIT License OR Apache License 2.0) +- addr2line 0.24.2 : (MIT License OR Apache License 2.0) +- adler2 2.0.0: [https://crates.io/crates/adler2](https://crates.io/crates/adler2) : (BSD Zero Clause License OR MIT License OR Apache License 2.0) +- alexcrichton/cfg-if 1.0.0: [https://github.com/alexcrichton/cfg-if](https://github.com/alexcrichton/cfg-if) : (MIT License AND Apache License 2.- 0) +- alexcrichton/jobserver-rs 0.1.32: [https://github.com/alexcrichton/jobserver-rs](https://github.com/alexcrichton/jobserver-rs) : Apache License 2.0 +- alexcrichton/openssl-probe 0.1.5: [https://github.com/alexcrichton/openssl-probe](https://github.com/alexcrichton/openssl-probe) : (MIT License OR Apache License 2.0) +- alexcrichton/proc-macro2 1.0.89: [https://github.com/alexcrichton/proc-macro2](https://github.com/alexcrichton/proc-macro2) : (MIT License OR Apache License 2.0) +- alexcrichton/rustc-demangle 0.1.24: [https://github.com/alexcrichton/rustc-demangle](https://github.com/alexcrichton/rustc-demangle) : (MIT License OR Apache License 2.0) +- alexcrichton/socket2-rs 0.5.7: [https://github.com/alexcrichton/socket2-rs](https://github.com/alexcrichton/socket2-rs) : (MIT License OR Apache License 2.0) +- aligned-vec 0.5.0: [https://crates.io/crates/aligned-vec](https://crates.io/crates/aligned-vec) : MIT License +- allocator-api2 0.2.18: [https://github.com/zakarumych/allocator-api2](https://github.com/zakarumych/allocator-api2) : (MIT License OR Apache License 2.0) +- android_system_properties 0.1.5: [https://github.com/nical/android_system_properties](https://github.com/nical/android_system_properties) : (MIT License OR Apache License 2.0) +- android-tzdata 0.1.1: [https://crates.io/crates/android-tzdata](https://crates.io/crates/android-tzdata) : (MIT License OR Apache License 2.0) +- annotate-snippets 0.9.2: [https://crates.io/crates/annotate-snippets](https://crates.io/crates/annotate-snippets) : (MIT License OR Apache License 2.0) +- anstyle 1.0.10: [https://github.com/rust-cli/anstyle](https://github.com/rust-cli/anstyle) : (MIT License OR Apache License 2.0) +- anyhow 1.0.93 : (MIT License OR Apache License 2.0) +- arbitrary 1.4.1 : (MIT License OR Apache License 2.0) +- arg_enum_proc_macro 0.3.4: [https://crates.io/crates/arg_enum_proc_macro](https://crates.io/crates/arg_enum_proc_macro) : MIT License +- assert-json-diff 2.0.2: [https://github.com/davidpdrsn/assert-json-diff](https://github.com/davidpdrsn/assert-json-diff) : MIT License +- async-trait 0.1.83 : (MIT License OR Apache License 2.0) +- atomic-traits 0.3.0: [https://github.com/flier/rust-atomic-traits](https://github.com/flier/rust-atomic-traits) : (MIT License OR Apache License 2.0) +- atomic-waker 1.1.2: [https://github.com/stjepang/atomic-waker](https://github.com/stjepang/atomic-waker) : (MIT License OR Apache License 2.0) +- autocfg 1.4.0 : Apache License 2.0 +- av1-grain 0.2.3: [https://github.com/rust-av/av1-grain](https://github.com/rust-av/av1-grain) : BSD 2-clause "Simplified" License +- avif-serialize 0.8.2: [https://lib.rs/avif-serialize](https://lib.rs/avif-serialize) : BSD 3-clause "New" or "Revised" License +- bit_field 0.10.2: [https://crates.io/crates/bit_field](https://crates.io/crates/bit_field) : (MIT License OR Apache License 2.0) +- bitflags 1.3.2: [https://github.com/rust-lang-nursery/bitflags](https://github.com/rust-lang-nursery/bitflags) : (MIT License OR Apache License 2.0) +- bitflags 2.6.0: [https://github.com/rust-lang-nursery/bitflags](https://github.com/rust-lang-nursery/bitflags) : (MIT License OR Apache License 2.0) +- bitstream-io 2.6.0: [https://github.com/tuffy/bitstream-io](https://github.com/tuffy/bitstream-io) : (MIT License OR Apache License 2.0) +- bitvec 1.0.1: [https://myrrlyn.net/crates/bitvec](https://myrrlyn.net/crates/bitvec) : MIT License +- bit-vec 0.6.3: [https://github.com/contain-rs/bit-vec](https://github.com/contain-rs/bit-vec) : (MIT License OR Apache License 2.0) +- block-buffer 0.10.4 : (MIT License OR Apache License 2.0) +- bluss/arrayvec 0.7.6 : Apache License 2.0 +- bluss/either 1.13.0 : Apache License 2.0 +- bluss/indexmap 2.6.0: [https://docs.rs/indexmap/](https://docs.rs/indexmap/) : (MIT License AND Apache License 2.0) +- bluss/scopeguard 1.2.0 : Apache License 2.0 +- briansmith/ring 0.17.8: [https://crates.io/crates/ring](https://crates.io/crates/ring) : (MIT License AND ISC License AND The Open SSL License) +- briansmith/untrusted 0.9.0 : ISC License +- built 0.7.5 : MIT License +- BurntSushi/byteorder 1.5.0: [https://github.com/BurntSushi/byteorder](https://github.com/BurntSushi/byteorder) : The Unlicense +- BurntSushi/regex-automata 0.4.8: [https://github.com/BurntSushi/regex-automata](https://github.com/BurntSushi/regex-automata) : (MIT License OR Apache License 2.0) +- BurntSushi/rust-memchr 2.7.4: [https://github.com/BurntSushi/rust-memchr](https://github.com/BurntSushi/rust-memchr) : (MIT License OR The Unlicense) +- BurntSushi/same-file 1.0.6: [https://github.com/BurntSushi/same-file](https://github.com/BurntSushi/same-file) : (MIT License AND The Unlicense) +- BurntSushi/ucd-generate 0.1.7: [https://github.com/BurntSushi/ucd-generate](https://github.com/BurntSushi/ucd-generate) : Apache License 2.0 +- BurntSushi/walkdir 2.5.0: [https://github.com/BurntSushi/walkdir](https://github.com/BurntSushi/walkdir) : The Unlicense +- bytemuck 1.19.0 : (zlib License OR MIT License OR Apache License 2.0) +- bytemuck_derive 1.8.0 : (zlib License OR MIT License OR Apache License 2.0) +- byteorder-lite 0.1.0: [https://github.com/image-rs/byteorder-lite](https://github.com/image-rs/byteorder-lite) : (MIT License OR The Unlicense) +- camino 1.1.9: [https://crates.io/crates/camino](https://crates.io/crates/camino) : (MIT License OR Apache License 2.0) +- candle-core 0.7.2 : (MIT License OR Apache License 2.0) +- candle-nn 0.7.2 : (MIT License OR Apache License 2.0) +- candle-transformers 0.7.2 : (MIT License OR Apache License 2.0) +- cargo_toml 0.19.2: [https://lib.rs/cargo_toml](https://lib.rs/cargo_toml) : (MIT License OR Apache License 2.0) +- cavif (Rust) 0.11.11: [https://lib.rs/cavif](https://lib.rs/cavif) : BSD 3-clause "New" or "Revised" License +- cc-rs 1.1.36: [https://docs.rs/cc](https://docs.rs/cc) : (MIT License OR Apache License 2.0) +- cee-scape 0.2.0: [https://github.com/pnkfelix/cee-scape](https://github.com/pnkfelix/cee-scape) : (MIT License OR Apache License 2.0) +- cexpr 0.6.0: [https://crates.io/crates/cexpr](https://crates.io/crates/cexpr) : (MIT License OR Apache License 2.0) +- cfg_aliases 0.2.1: [https://github.com/katharostech/cfg_aliases](https://github.com/katharostech/cfg_aliases) : MIT License +- cfg-expr 0.15.8: [https://github.com/EmbarkStudios/cfg-expr](https://github.com/EmbarkStudios/cfg-expr) : (MIT License OR Apache License 2.0) +- chronotope/chrono 0.4.38: [https://github.com/chronotope/chrono](https://github.com/chronotope/chrono) : (MIT License AND Apache License 2.0) +- clap-cargo 0.14.1 : (MIT License OR Apache License 2.0) +- clap-rs/clap 0.7.2: [https://clap.rs/](https://clap.rs/) : MIT License +- clap-rs/clap 4.5.18: [https://clap.rs/](https://clap.rs/) : (MIT License OR Apache License 2.0) +- clap-rs/clap 4.5.20: [https://clap.rs/](https://clap.rs/) : (MIT License OR Apache License 2.0) +- colin-kiegel/rust-derive-builder 0.20.2 : Apache License 2.0 +- color_quant 1.1.0: [https://crates.io/crates/color_quant](https://crates.io/crates/color_quant) : MIT License +- console-rs/console 0.15.8: [https://github.com/mitsuhiko/console](https://github.com/mitsuhiko/console) : MIT License +- contain-rs/bit-set 0.5.3: [https://github.com/contain-rs/bit-set](https://github.com/contain-rs/bit-set) : (MIT License OR Apache License 2.0) +- convert_case 0.6.0: [https://crates.io/crates/convert_case](https://crates.io/crates/convert_case) : MIT License +- cpufeatures 0.2.14 : (MIT License OR Apache License 2.0) +- crossbeam-deque 0.8.5: [https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque](https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque) : (MIT License OR Apache License 2.0) +- crossbeam-epoch 0.9.18: [https://github.com/crossbeam-rs/crossbeam](https://github.com/crossbeam-rs/crossbeam) : (MIT License OR Apache License 2.- 0) +- crossbeam-utils 0.8.20: [https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils](https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils) : (MIT License OR Apache License 2.0) +- crunchy 0.2.2: [https://crates.io/crates/crunchy](https://crates.io/crates/crunchy) : MIT License +- derive_arbitrary 1.4.1 : (MIT License OR Apache License 2.0) +- dguo/strsim-rs 0.11.1: [https://github.com/dguo/strsim-rs](https://github.com/dguo/strsim-rs) : MIT License +- digest 0.10.7 : (MIT License OR Apache License 2.0) +- directories 5.0.1: [https://crates.io/crates/directories](https://crates.io/crates/directories) : (MIT License OR Apache License 2.0) +- dirs 5.0.1: [https://crates.io/crates/dirs](https://crates.io/crates/dirs) : (MIT License OR Apache License 2.0) +- dirs-sys 0.4.1: [https://crates.io/crates/dirs-sys](https://crates.io/crates/dirs-sys) : (MIT License OR Apache License 2.0) +- displaydoc 0.2.5: [https://github.com/yaahc/displaydoc](https://github.com/yaahc/displaydoc) : (MIT License OR Apache License 2.0) +- djc/quinn 0.11.5 : (MIT License OR Apache License 2.0) +- djc/quinn 0.11.8 : (MIT License OR Apache License 2.0) +- doc-comment 0.3.3: [https://crates.io/crates/doc-comment](https://crates.io/crates/doc-comment) : MIT License +- dtolnay/itoa 1.0.11 : Apache License 2.0 +- dtolnay/quote 1.0.37 : Apache License 2.0 +- dtolnay/ryu 1.0.18 : (Apache License 2.0 OR Boost Software License 1.0) +- dyn-stack 0.10.0 : MIT License +- encode_unicode 0.3.6: [https://crates.io/crates/encode_unicode](https://crates.io/crates/encode_unicode) : (MIT License OR Apache License 2.0) +- encoding_rs 0.8.35: [https://docs.rs/encoding_rs/](https://docs.rs/encoding_rs/) : (BSD 3-clause "New" or "Revised" License AND (MIT License OR Apache License 2.0)) +- enum-as-inner 0.6.1 : (MIT License OR Apache License 2.0) +- enum-map 2.7.3: [https://crates.io/crates/enum-map](https://crates.io/crates/enum-map) : (MIT License OR Apache License 2.0) +- enum-map-derive 0.17.0: [https://crates.io/crates/enum-map-derive](https://crates.io/crates/enum-map-derive) : (MIT License OR Apache License 2.0) +- equivalent 1.0.1 : (MIT License OR Apache License 2.0) +- errno 0.3.9 : (MIT License OR Apache License 2.0) +- esaxx-rs 0.1.10: [https://github.com/Narsil/esaxx-rs](https://github.com/Narsil/esaxx-rs) : Apache License 2.0 +- exr 1.73.0: [https://crates.io/crates/exr](https://crates.io/crates/exr) : BSD 3-clause "New" or "Revised" License +- eyre 0.6.12: [https://github.com/yaahc/eyre](https://github.com/yaahc/eyre) : (MIT License OR Apache License 2.0) +- fallible-iterator 0.2.0: [https://crates.io/crates/fallible-iterator](https://crates.io/crates/fallible-iterator) : (MIT License OR Apache License 2.0) +- fancy-regex 0.13.0: [https://github.com/fancy-regex/fancy-regex](https://github.com/fancy-regex/fancy-regex) : MIT License +- fastrand 2.1.1: [https://github.com/stjepang/fastrand](https://github.com/stjepang/fastrand) : (MIT License OR Apache License 2.0) +- fdeflate: [https://github.com/image-rs/fdeflate](https://github.com/image-rs/fdeflate) : (MIT License OR Apache License 2.0) +- filetime 0.2.25: [https://github.com/alexcrichton/filetime](https://github.com/alexcrichton/filetime) : (MIT License OR Apache License 2.0) +- fitzgen/bumpalo 3.16.0 : Apache License 2.0 +- fixedbitset 0.4.2 : (MIT License OR Apache License 2.0) +- flate2 1.0.34: [https://github.com/alexcrichton/flate2-rs](https://github.com/alexcrichton/flate2-rs) : (MIT License OR Apache License 2.0) +- foldhash 0.1.3: [https://crates.io/crates/foldhash](https://crates.io/crates/foldhash) : zlib License +- foreign-types 0.1.1: [https://github.com/sfackler/foreign-types](https://github.com/sfackler/foreign-types) : (MIT License OR Apache License 2.0) +- foreign-types 0.3.2: [https://github.com/sfackler/foreign-types](https://github.com/sfackler/foreign-types) : (MIT License OR Apache License 2.0) +- funty 2.0.0: [https://ferrilab.github.io/ferrilab](https://ferrilab.github.io/ferrilab) : MIT License +- futures-task 0.3.31: [https://rust-lang-nursery.github.io/futures-rs](https://rust-lang-nursery.github.io/futures-rs) : (MIT License OR Apache License 2.0) +- gemm 0.17.1 : MIT License +- gemm-c32 0.17.1: [https://crates.io/crates/gemm-c32](https://crates.io/crates/gemm-c32) : MIT License +- gemm-c64 0.17.1: [https://crates.io/crates/gemm-c64](https://crates.io/crates/gemm-c64) : MIT License +- gemm-common 0.17.1 : MIT License +- gemm-f16 0.17.1: [https://crates.io/crates/gemm-f16](https://crates.io/crates/gemm-f16) : MIT License +- gemm-f32 0.17.1: [https://crates.io/crates/gemm-f32](https://crates.io/crates/gemm-f32) : MIT License +- gemm-f64 0.17.1: [https://crates.io/crates/gemm-f64](https://crates.io/crates/gemm-f64) : MIT License +- generic-array 0.14.7: [https://crates.io/crates/generic-array](https://crates.io/crates/generic-array) : MIT License +- getrandom 0.2.15 : (MIT License OR Apache License 2.0) +- getset 0.1.3 : MIT License +- gif 0.13.1: [https://github.com/image-rs/image-gif](https://github.com/image-rs/image-gif) : (MIT License OR Apache License 2.0) +- gimli-rs 0.31.1: [https://docs.rs/gimli/](https://docs.rs/gimli/) : Apache License 2.0 +- glob 0.3.1: [https://github.com/rust-lang/glob](https://github.com/rust-lang/glob) : (MIT License OR Apache License 2.0) +- hash32 0.3.1: [https://crates.io/crates/hash32](https://crates.io/crates/hash32) : (MIT License OR Apache License 2.0) +- heck 0.4.1: [https://github.com/withoutboats/heck](https://github.com/withoutboats/heck) : (MIT License OR Apache License 2.0) +- heck 0.5.0: [https://github.com/withoutboats/heck](https://github.com/withoutboats/heck) : (MIT License OR Apache License 2.0) +- hermitcore/libhermit-rs 0.3.9: [https://hermitcore.org](https://hermitcore.org) : BSD 3-clause "New" or "Revised" License +- hermitcore/libhermit-rs 0.4.0: [https://hermitcore.org](https://hermitcore.org) : BSD 3-clause "New" or "Revised" License +- hf-hub 0.3.2: [https://github.com/huggingface/hf-hub](https://github.com/huggingface/hf-hub) : Apache License 2.0 +- home 0.5.9 : (MIT License OR Apache License 2.0) +- httpdate 1.0.3: [https://crates.io/crates/httpdate](https://crates.io/crates/httpdate) : (MIT License OR Apache License 2.0) +- hyperium/h2 0.4.6: [https://github.com/crates-patch](https://github.com/crates-patch) : MIT License +- hyperium/http 1.1.0: [https://github.com/hyperium/http](https://github.com/hyperium/http) : Apache License 2.0 +- hyperium/http-body 0.1.2: [https://github.com/hyperium/http-body](https://github.com/hyperium/http-body) : MIT License +- hyperium/http-body 1.0.1: [https://github.com/hyperium/http-body](https://github.com/hyperium/http-body) : MIT License +- hyperium/mime 0.3.17 : MIT License +- hyper-rustls 0.27.3: [https://github.com/ctz/hyper-rustls](https://github.com/ctz/hyper-rustls) : (MIT License OR ISC License OR Apache License 2.0) +- hyper-tls 0.6.0: [https://crates.io/crates/hyper-tls](https://crates.io/crates/hyper-tls) : (MIT License OR Apache License 2.0) +- hyper-util: [https://hyper.rs](https://hyper.rs) : MIT License +- iana-time-zone 0.1.61: [https://crates.io/crates/iana-time-zone](https://crates.io/crates/iana-time-zone) : (MIT License OR Apache License 2.0) +- iana-time-zone-haiku 0.1.2: [https://crates.io/crates/iana-time-zone-haiku](https://crates.io/crates/iana-time-zone-haiku) : (MIT License OR Apache License 2.0) +- icu_locid: [https://icu4x.unicode.org](https://icu4x.unicode.org) : +- icu_normalizer: [https://icu4x.unicode.org](https://icu4x.unicode.org) : +- icu_provider: [https://icu4x.unicode.org](https://icu4x.unicode.org) : +- icu_provider_macros: [https://icu4x.unicode.org](https://icu4x.unicode.org) : +- idna_adapter 1.2.0: [https://docs.rs/crate/idna_adapter/latest](https://docs.rs/crate/idna_adapter/latest) : (MIT License OR Apache License 2.0) +- image-rs/image 0.25.5: [https://github.com/image-rs/image](https://github.com/image-rs/image) : (MIT License OR Apache License 2.0) +- image-webp 0.2.0: [https://github.com/image-rs/image-webp](https://github.com/image-rs/image-webp) : (MIT License OR Apache License 2.0) +- imgref 1.11.0: [https://crates.io/crates/imgref](https://crates.io/crates/imgref) : (Creative Commons Zero v1.0 Universal OR Apache License 2.0) +- indenter 0.3.3: [https://github.com/yaahc/indenter](https://github.com/yaahc/indenter) : (MIT License OR Apache License 2.0) +- instant 0.1.13 : BSD 3-clause "New" or "Revised" License +- intel-mkl-src 0.8.1: [https://crates.io/crates/intel-mkl-src](https://crates.io/crates/intel-mkl-src) : +- intel-mkl-tool 0.8.1: [https://crates.io/crates/intel-mkl-tool](https://crates.io/crates/intel-mkl-tool) : MIT License +- interpolate_name 0.2.4: [https://crates.io/crates/interpolate_name](https://crates.io/crates/interpolate_name) : MIT License +- ipnet 2.10.1 : (MIT License OR Apache License 2.0) +- is_ci 1.2.0: [https://crates.io/crates/is_ci](https://crates.io/crates/is_ci) : ISC License +- is-terminal 0.4.13 : MIT License +- japaric/heapless 0.8.0 : (MIT License OR Apache License 2.0) +- jedisct1/rust-siphash 0.3.11: [https://docs.rs/siphasher](https://docs.rs/siphasher) : Apache License 2.0 +- jpeg-decoder 0.3.1: [https://crates.io/crates/jpeg-decoder](https://crates.io/crates/jpeg-decoder) : (MIT License OR Apache License 2.0) +- js-sys 0.3.72: [https://rustwasm.github.io/wasm-bindgen/](https://rustwasm.github.io/wasm-bindgen/) : (MIT License OR Apache License 2.0) +- Kimundi/rustc-version-rs 0.3.3 : (MIT License OR Apache License 2.0) +- KyleMayes/clang-sys 1.8.1 : Apache License 2.0 +- lazy_static 1.5.0: [https://github.com/rust-lang-nursery/lazy-static.rs](https://github.com/rust-lang-nursery/lazy-static.rs) : Apache License 2.0 +- lebe 0.5.2: [https://crates.io/crates/lebe](https://crates.io/crates/lebe) : BSD 3-clause "New" or "Revised" License +- libfuzzer-sys 0.4.7: [https://crates.io/crates/libfuzzer-sys](https://crates.io/crates/libfuzzer-sys) : (University of Illinois/NCSA Open Source License OR MIT License OR Apache License 2.0) +- libm 0.2.11: [https://crates.io/crates/libm](https://crates.io/crates/libm) : MIT License +- libredox 0.1.3 : MIT License +- linux-raw-sys 0.4.14 : (MIT License OR Apache License 2.0 with Exceptions OR Apache License 2.0) +- litemap: [https://crates.io/crates/litemap](https://crates.io/crates/litemap) : +- lock_api 0.4.12 : (MIT License OR Apache License 2.0) +- log 0.4.22 : (MIT License OR Apache License 2.0) +- loop9 0.1.5: [https://lib.rs/loop9](https://lib.rs/loop9) : MIT License +- lru 0.12.5: [https://github.com/jeromefroe/lru-rs](https://github.com/jeromefroe/lru-rs) : MIT License +- mackwic/colored 2.1.0: [https://github.com/mackwic/colored](https://github.com/mackwic/colored) : Mozilla Public License 2.0 +- macro_rules_attribute 0.2.0: [https://crates.io/crates/macro_rules_attribute](https://crates.io/crates/macro_rules_attribute) : MIT License +- macro_rules_attribute-proc_macro 0.2.0: [https://crates.io/crates/macro_rules_attribute-proc_macro](https://crates.io/crates/macro_rules_attribute-proc_macro) : MIT License +- matklad/once_cell 1.20.2 : Apache License 2.0 +- maybe-rayon 0.1.1: [https://github.com/shssoichiro/maybe-rayon](https://github.com/shssoichiro/maybe-rayon) : MIT License +- memmap2 0.9.5 : (MIT License OR Apache License 2.0) +- microsoft/windows-rs 0.1.0: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : (MIT License OR Apache License 2.0) +- microsoft/windows-rs 0.1.2: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : MIT License +- microsoft/windows-rs 0.2.0: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : (MIT License OR Apache License 2.0) +- microsoft/windows-rs 0.52.0: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : (MIT License OR Apache License 2.0) +- microsoft/windows-rs 0.52.6: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : (MIT License OR Apache License 2.0) +- microsoft/windows-rs 0.57.0: [https://github.com/microsoft/windows-rs](https://github.com/microsoft/windows-rs) : Apache License 2.0 +- minimal-lexical 0.2.1: [https://crates.io/crates/minimal-lexical](https://crates.io/crates/minimal-lexical) : (MIT License OR Apache License 2.0) +- miniz_oxide 0.8.0: [https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide](https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide) : (zlib License OR MIT License OR Apache License 2.0) +- mitsuhiko/indicatif 0.17.8 : MIT License +- mockito 1.5.0: [https://github.com/lipanski/mockito](https://github.com/lipanski/mockito) : MIT License +- monostate 0.1.13: [https://crates.io/crates/monostate](https://crates.io/crates/monostate) : (MIT License OR Apache License 2.0) +- monostate-impl 0.1.13: [https://crates.io/crates/monostate-impl](https://crates.io/crates/monostate-impl) : (MIT License OR Apache License 2.0) +- mvdnes/spin-rs 0.9.8 : MIT License +- nagisa/rust_libloading 0.8.5 : ISC License +- native-tls 0.2.12: [https://crates.io/crates/native-tls](https://crates.io/crates/native-tls) : (MIT License OR Apache License 2.0) +- new_debug_unreachable 1.0.6: [https://crates.io/crates/new_debug_unreachable](https://crates.io/crates/new_debug_unreachable) : MIT License +- noop_proc_macro 0.3.0: [https://crates.io/crates/noop_proc_macro](https://crates.io/crates/noop_proc_macro) : MIT License +- nox/serde_urlencoded 0.7.1 : (MIT License OR Apache License 2.0) +- ntapi 0.4.1: [https://crates.io/crates/ntapi](https://crates.io/crates/ntapi) : (MIT License OR Apache License 2.0) +- num 0.4.3: [https://github.com/rust-num/num](https://github.com/rust-num/num) : (MIT License OR Apache License 2.0) +- number_prefix 0.4.0: [https://crates.io/crates/number_prefix](https://crates.io/crates/number_prefix) : MIT License +- num-bigint 0.4.6: [https://github.com/rust-num/num-bigint](https://github.com/rust-num/num-bigint) : (MIT License OR Apache License 2.0) +- num_cpus 1.16.0: [https://crates.io/crates/num_cpus](https://crates.io/crates/num_cpus) : (MIT License OR Apache License 2.0) +- num-derive 0.4.2: [https://github.com/rust-num/num-derive](https://github.com/rust-num/num-derive) : (MIT License OR Apache License 2.0) +- num_enum 0.7.3: [https://crates.io/crates/num_enum](https://crates.io/crates/num_enum) : (MIT License OR Apache License 2.0 OR BSD 3-clause "New" or "Revised" License) +- num_enum_derive 0.7.3: [https://crates.io/crates/num_enum_derive](https://crates.io/crates/num_enum_derive) : (MIT License OR Apache License 2.0 OR BSD 3-clause "New" or "Revised" License) +- num-integer 0.1.46: [https://github.com/rust-num/num-integer](https://github.com/rust-num/num-integer) : (MIT License OR Apache License 2.0) +- num-iter 0.1.45: [https://github.com/rust-num/num-iter](https://github.com/rust-num/num-iter) : (MIT License OR Apache License 2.0) +- num-rational 0.4.2: [https://github.com/rust-num/num-rational](https://github.com/rust-num/num-rational) : (MIT License OR Apache License 2.0) +- num-traits 0.2.19: [https://github.com/rust-num/num-traits](https://github.com/rust-num/num-traits) : (MIT License OR Apache License 2.0) +- object-rs 0.36.5: [https://crates.io/crates/object](https://crates.io/crates/object) : Apache License 2.0 +- object_store 0.10.2 : (MIT License OR Apache License 2.0) +- ocipkg 0.2.9: [https://crates.io/crates/ocipkg](https://crates.io/crates/ocipkg) : (MIT License OR Apache License 2.0) +- oci-spec 0.6.7: [https://github.com/containers/oci-spec-rs](https://github.com/containers/oci-spec-rs) : Apache License 2.0 +- oli-obk/cargo_metadata 0.18.1 : MIT License +- onig 6.4.0: [https://crates.io/crates/onig](https://crates.io/crates/onig) : MIT License +- onig_sys 69.8.1: [https://crates.io/crates/onig_sys](https://crates.io/crates/onig_sys) : MIT License +- openssl-macros 0.1.1: [https://crates.io/crates/openssl-macros](https://crates.io/crates/openssl-macros) : (MIT License OR Apache License 2.0) +- option-ext 0.2.0: [https://github.com/soc/option-ext](https://github.com/soc/option-ext) : Mozilla Public License 2.0 +- ordian/toml_edit 0.22.22 : Apache License 2.0 +- owo-colors 4.1.0 : MIT License +- paholg/typenum 1.17.0 : (MIT License OR Apache License 2.0) +- parking_lot 0.12.3 : Apache License 2.0 +- parking_lot_core 0.9.10 : (MIT License OR Apache License 2.0) +- paste 1.0.15 : (MIT License OR Apache License 2.0) +- pathsearch 0.2.0: [https://crates.io/crates/pathsearch](https://crates.io/crates/pathsearch) : MIT License +- pest-parser 2.7.14: [https://github.com/pest-parser/pest](https://github.com/pest-parser/pest) : Apache License 2.0 +- petgraph 0.6.5 : (MIT License OR Apache License 2.0) +- pgrx 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pgrx-bindgen 0.12.8: [https://github.com/pgcentralfoundation/pgrx](https://github.com/pgcentralfoundation/pgrx) : MIT License +- pgrx-macros 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pgrx-pg-config 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pgrx-pg-sys 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pgrx-sql-entity-graph 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pgrx-tests 0.12.8: [https://github.com/tcdi/pgrx](https://github.com/tcdi/pgrx) : MIT License +- pin-project-lite 0.2.15: [https://github.com/taiki-e/pin-project-lite](https://github.com/taiki-e/pin-project-lite) : (MIT License OR Apache License 2.0) +- pin-utils 0.1.0: [https://crates.io/crates/pin-utils](https://crates.io/crates/pin-utils) : (MIT License OR Apache License 2.0) +- pkg-config 0.3.31 : (MIT License OR Apache License 2.0) +- png 0.17.14: [https://crates.io/crates/png](https://crates.io/crates/png) : (MIT License OR Apache License 2.0) +- portable-atomic 1.9.0 : (MIT License OR Apache License 2.0) +- ppv-lite86 0.2.20 : (MIT License OR Apache License 2.0) +- proc-macro-crate 3.2.0 : (MIT License OR Apache License 2.0) +- proc-macro-error2 2.0.1 : (MIT License OR Apache License 2.0) +- proc-macro-error-attr2 2.0.0: [https://crates.io/crates/proc-macro-error-attr2](https://crates.io/crates/proc-macro-error-attr2) : (MIT License OR Apache License 2.0) +- profiling 1.0.16: [https://github.com/aclysma/profiling](https://github.com/aclysma/profiling) : (MIT License OR Apache License 2.0) +- profiling-procmacros 1.0.16: [https://github.com/aclysma/profiling](https://github.com/aclysma/profiling) : (MIT License OR Apache License 2.- 0) +- proptest 1.5.0: [https://altsysrq.github.io/proptest-book/proptest/index.html](https://altsysrq.github.io/proptest-book/proptest/index.html) : (MIT License OR Apache License 2.0) +- pulp 0.18.22 : MIT License +- qoi 0.4.1: [https://github.com/aldanor/qoi-rust](https://github.com/aldanor/qoi-rust) : (MIT License OR Apache License 2.0) +- quinn-udp 0.5.7 : (MIT License OR Apache License 2.0) +- radium 0.7.0: [https://github.com/mystor/radium](https://github.com/mystor/radium) : MIT License +- rand_chacha 0.3.1: [https://crates.io/crates/rand_chacha](https://crates.io/crates/rand_chacha) : MIT License +- rand_core 0.6.4: [https://crates.io/crates/rand_core](https://crates.io/crates/rand_core) : (MIT License OR Apache License 2.0) +- rand_distr 0.4.3: [https://crates.io/crates/rand_distr](https://crates.io/crates/rand_distr) : MIT License +- rand_xorshift 0.3.0: [https://crates.io/crates/rand_xorshift](https://crates.io/crates/rand_xorshift) : (MIT License OR Apache License 2.0) +- rav1e 0.3.8: [https://github.com/xiph/rav1e](https://github.com/xiph/rav1e) : BSD 2-clause "Simplified" License +- rav1e 0.7.1: [https://github.com/xiph/rav1e](https://github.com/xiph/rav1e) : BSD 2-clause "Simplified" License +- raw-cpuid 10.7.0: [https://github.com/gz/rust-cpuid](https://github.com/gz/rust-cpuid) : MIT License +- rayon 1.10.0: [https://github.com/rayon-rs/rayon](https://github.com/rayon-rs/rayon) : (MIT License OR Apache License 2.0) +- rayon 1.12.1: [https://github.com/rayon-rs/rayon](https://github.com/rayon-rs/rayon) : (MIT License OR Apache License 2.0) +- rayon-cond 0.3.0: [https://crates.io/crates/rayon-cond](https://crates.io/crates/rayon-cond) : (MIT License OR Apache License 2.0) +- reborrow 0.5.5: [https://crates.io/crates/reborrow](https://crates.io/crates/reborrow) : MIT License +- redox-os 0.5.7: [http://www.redox-os.org](http://www.redox-os.org) : MIT License +- redox_users 0.4.6 : MIT License +- regex-syntax 0.8.5: [https://github.com/rust-lang/regex](https://github.com/rust-lang/regex) : (MIT License OR Apache License 2.0) +- rust-aho-corasick 1.1.3: [https://github.com/BurntSushi/aho-corasick](https://github.com/BurntSushi/aho-corasick) : The Unlicense +- rust-base64 0.13.1 : (MIT License OR Apache License 2.0) +- rust-base64 0.22.1 : (MIT License OR Apache License 2.0) +- rustc-hash 1.1.0: [https://crates.io/crates/rustc-hash](https://crates.io/crates/rustc-hash) : (MIT License OR Apache License 2.0) +- rustc-hash: [https://crates.io/crates/rustc-hash](https://crates.io/crates/rustc-hash) : (MIT License OR Apache License 2.0) +- RustCrypto/hashes 0.10.6 : (MIT License OR Apache License 2.0) +- RustCrypto/hashes 0.10.8 : (MIT License OR Apache License 2.0) +- RustCrypto/MACs 0.12.1: [https://crates.io/crates/hmac](https://crates.io/crates/hmac) : (MIT License OR Apache License 2.0) +- RustCrypto/traits 0.1.6: [https://github.com/RustCrypto/traits](https://github.com/RustCrypto/traits) : (MIT License OR Apache License 2.0) +- RustCrypto/traits 0.2.0: [https://github.com/RustCrypto/traits](https://github.com/RustCrypto/traits) : (MIT License OR Apache License 2.0) +- rust-hyper 1.5.0: [https://hyper.rs](https://hyper.rs) : MIT License +- rust-itertools/itertools 0.11.0 : Apache License 2.0 +- rust-itertools/itertools 0.12.1 : Apache License 2.0 +- rust-itertools/itertools 0.13.0 : (MIT License OR Apache License 2.0) +- rustix 0.38.39 : (MIT License OR Apache License 2.0 with Exceptions OR Apache License 2.0) +- rust-lang/backtrace-rs 0.3.74: [https://github.com/rust-lang/backtrace-rs](https://github.com/rust-lang/backtrace-rs) : (MIT License OR Apache License 2.0) +- rust-lang/cargo 0.1.8: [https://github.com/rust-lang/cargo](https://github.com/rust-lang/cargo) : (MIT License OR Apache License 2.0) +- rust-lang/hashbrown 0.15.1 : (MIT License OR Apache License 2.0) +- rust-lang-nursery/futures-rs 0.3.31: [http://rust-lang-nursery.github.io/futures-rs](http://rust-lang-nursery.github.io/futures-rs) : (MIT License AND Apache License 2.0) +- rust-lang/rust-bindgen 0.70.1: [https://rust-lang.github.io/rust-bindgen/](https://rust-lang.github.io/rust-bindgen/) : BSD 3-clause "New" or "Revised" License +- rust-libc 0.2.161: [https://github.com/rust-lang/libc](https://github.com/rust-lang/libc) : (MIT License OR Apache License 2.0) +- rustls: [https://github.com/ctz/rustls](https://github.com/ctz/rustls) : (MIT License OR ISC License OR Apache License 2.0) +- rustls-native-certs 0.8.0: [https://github.com/ctz/rustls-native-certs](https://github.com/ctz/rustls-native-certs) : (MIT License OR ISC License OR Apache License 2.0) +- rustls-pemfile 2.2.0: [https://github.com/rustls/pemfile](https://github.com/rustls/pemfile) : (MIT License OR ISC License OR Apache License 2.0) +- rustls-pki-types 1.10.0: [https://github.com/rustls/pki-types](https://github.com/rustls/pki-types) : (MIT License OR Apache License 2.0) +- rustls-webpki 0.102.8 : ISC License +- rust-mio 1.0.2: [https://github.com/carllerche/mio](https://github.com/carllerche/mio) : MIT License +- rust-nom 7.1.3: [https://github.com/Geal/nom](https://github.com/Geal/nom) : MIT License +- rust-num/num-complex 0.4.6: [https://github.com/rust-num/num-complex](https://github.com/rust-num/num-complex) : (MIT License OR Apache License 2.0) +- rust-openssl 0.10.68 : Apache License 2.0 +- rust-openssl 0.9.104 : MIT License +- rust-phf 0.11.2: [https://github.com/sfackler/rust-phf](https://github.com/sfackler/rust-phf) : MIT License +- rust-postgres 0.19.9: [https://github.com/sfackler/rust-postgres](https://github.com/sfackler/rust-postgres) : (MIT License OR Apache License 2.0) +- rust-postgres 0.2.8: [https://github.com/sfackler/rust-postgres](https://github.com/sfackler/rust-postgres) : (MIT License OR Apache License 2.0) +- rust-postgres 0.6.7: [https://github.com/sfackler/rust-postgres](https://github.com/sfackler/rust-postgres) : (MIT License OR Apache License 2.0) +- rust-postgres 0.7.12: [https://github.com/sfackler/rust-postgres](https://github.com/sfackler/rust-postgres) : (MIT License OR Apache License 2.0) +- rust-random/rand 0.8.5: [https://crates.io/crates/rand](https://crates.io/crates/rand) : (MIT License OR Apache License 2.0) +- rust-regex 1.11.1: [https://docs.rs/regex](https://docs.rs/regex) : (MIT License OR Apache License 2.0) +- rust-rgb 0.8.50: [https://kornelski.github.io/rust-rgb/rgb/](https://kornelski.github.io/rust-rgb/rgb/) : MIT License +- rust-url 1.2.1: [https://docs.rs/url/](https://docs.rs/url/) : (MIT License OR Apache License 2.0) +- rust-url 2.3.1: [https://docs.rs/url/](https://docs.rs/url/) : Apache License 2.0 +- rust-url: [https://docs.rs/url/](https://docs.rs/url/) : (MIT License AND Apache License 2.0) +- rustversion 1.0.18 : (MIT License OR Apache License 2.0) +- rust-xattr 1.3.1: [https://github.com/Stebalien/xattr](https://github.com/Stebalien/xattr) : Apache License 2.0 +- rusty-fork 0.3.0: [https://crates.io/crates/rusty-fork](https://crates.io/crates/rusty-fork) : (MIT License OR Apache License 2.0) +- safetensors 0.4.5: [https://github.com/huggingface/safetensors](https://github.com/huggingface/safetensors) : Apache License 2.0 +- seahash 4.1.0: [https://crates.io/crates/seahash](https://crates.io/crates/seahash) : MIT License +- seanmonstar/httparse 1.9.5: [https://crates.io/crates/httparse](https://crates.io/crates/httparse) : (MIT License OR Apache License 2.0) +- seanmonstar/reqwest : (MIT License OR Apache License 2.0) +- seanmonstar/try-lock 0.2.5: [https://github.com/seanmonstar/try-lock](https://github.com/seanmonstar/try-lock) : MIT License +- seanmonstar/want 0.3.1: [https://github.com/seanmonstar/want](https://github.com/seanmonstar/want) : MIT License +- security-framework 2.11.1 : (MIT License OR Apache License 2.0) +- security-framework 2.12.0 : (MIT License OR Apache License 2.0) +- semver 0.11.0: [https://docs.rs/crate/semver/](https://docs.rs/crate/semver/) : (MIT License OR Apache License 2.0) +- semver 1.0.23: [https://docs.rs/crate/semver/](https://docs.rs/crate/semver/) : (MIT License OR Apache License 2.0) +- semver-parser 0.10.2: [https://github.com/steveklabnik/semver-parser](https://github.com/steveklabnik/semver-parser) : (MIT License OR Apache License 2.0) +- seq-macro 0.3.5: [https://crates.io/crates/seq-macro](https://crates.io/crates/seq-macro) : (MIT License OR Apache License 2.0) +- serde: [https://serde.rs/](https://serde.rs/) : (MIT License OR Apache License 2.0) +- serde_cbor 0.11.2: [https://crates.io/crates/serde_cbor](https://crates.io/crates/serde_cbor) : (MIT License OR Apache License 2.0) +- serde_json 1.0.132: [http://docs.serde.rs/serde_json/](http://docs.serde.rs/serde_json/) : Apache License 2.0 +- serde_plain 1.0.2: [https://docs.rs/serde_plain](https://docs.rs/serde_plain) : (MIT License OR Apache License 2.0) +- serde_spanned 0.6.8: [https://github.com/toml-rs/toml](https://github.com/toml-rs/toml) : (MIT License OR Apache License 2.0) +- SergioBenitez/version_check 0.9.5 : (MIT License OR Apache License 2.0) +- servo/core-foundation-rs 0.8.7: [https://github.com/servo/core-foundation-rs](https://github.com/servo/core-foundation-rs) : (MIT License OR Apache License 2.0) +- servo/core-foundation-rs 0.9.4: [https://github.com/servo/core-foundation-rs](https://github.com/servo/core-foundation-rs) : (MIT License OR Apache License 2.0) +- servo/rust-fnv 1.0.7 : (MIT License OR Apache License 2.0) +- servo/rust-smallvec 1.13.2 : Apache License 2.0 +- servo/unicode-bidi 0.3.17 : (MIT License OR Apache License 2.0) +- shlex 1.3.0: [https://crates.io/crates/shlex](https://crates.io/crates/shlex) : (MIT License OR Apache License 2.0) +- signal-hook-registry 1.4.2: [https://crates.io/crates/signal-hook-registry](https://crates.io/crates/signal-hook-registry) : (MIT License OR Apache License 2.0) +- simd-adler32 0.3.7: [https://crates.io/crates/simd-adler32](https://crates.io/crates/simd-adler32) : MIT License +- simd_helpers 0.1.0: [https://crates.io/crates/simd_helpers](https://crates.io/crates/simd_helpers) : MIT License +- similar 2.6.0 : Apache License 2.0 +- slab 0.4.9: [https://github.com/carllerche/slab](https://github.com/carllerche/slab) : MIT License +- snafu 0.7.5: [https://crates.io/crates/snafu](https://crates.io/crates/snafu) : (MIT License OR Apache License 2.0) +- snafu-derive 0.7.5: [https://crates.io/crates/snafu-derive](https://crates.io/crates/snafu-derive) : (MIT License OR Apache License 2.0) +- spm_precompiled 0.1.4: [https://github.com/huggingface/spm_precompiled](https://github.com/huggingface/spm_precompiled) : Apache License 2.0 +- sptr 0.3.2: [https://crates.io/crates/sptr](https://crates.io/crates/sptr) : (MIT License OR Apache License 2.0) +- srijs/rust-crc32fast 1.4.2 : Apache License 2.0 +- stable_deref_trait 1.2.0: [https://crates.io/crates/stable_deref_trait](https://crates.io/crates/stable_deref_trait) : (MIT License OR Apache License 2.0) +- starkat99/half-rs 1.8.3 : (MIT License OR Apache License 2.0) +- starkat99/half-rs 2.4.1 : (MIT License OR Apache License 2.0) +- Stebalien/tempfile 3.13.0: [http://stebalien.com/projects/tempfile-rs](http://stebalien.com/projects/tempfile-rs) : Apache License 2.0 +- steffengy/schannel-rs 0.1.26 : MIT License +- stringprep 0.1.5: [https://crates.io/crates/stringprep](https://crates.io/crates/stringprep) : (MIT License OR Apache License 2.0) +- strum-rs 0.26.3: [https://crates.io/crates/strum](https://crates.io/crates/strum) : MIT License +- strum-rs 0.26.4: [https://crates.io/crates/strum](https://crates.io/crates/strum) : MIT License +- subtle 2.6.1: [https://crates.io/crates/subtle](https://crates.io/crates/subtle) : BSD 3-clause "New" or "Revised" License +- supports-color 2.1.0: [https://crates.io/crates/supports-color](https://crates.io/crates/supports-color) : Apache License 2.0 +- supports-color 3.0.1: [https://crates.io/crates/supports-color](https://crates.io/crates/supports-color) : Apache License 2.0 +- syn 1.0.109: [https://github.com/dtolnay/syn](https://github.com/dtolnay/syn) : Apache License 2.0 +- syn 2.0.87: [https://github.com/dtolnay/syn](https://github.com/dtolnay/syn) : (MIT License OR Apache License 2.0) +- sync_wrapper 1.0.1: [https://docs.rs/sync_wrapper](https://docs.rs/sync_wrapper) : Apache License 2.0 +- synstructure 0.13.1: [https://crates.io/crates/synstructure](https://crates.io/crates/synstructure) : MIT License +- sysctl 0.5.5 : MIT License +- sysinfo-rs 0.30.13: [https://github.com/GuillaumeGomez/sysinfo](https://github.com/GuillaumeGomez/sysinfo) : MIT License +- sysinfo-rs 0.32.0: [https://github.com/GuillaumeGomez/sysinfo](https://github.com/GuillaumeGomez/sysinfo) : MIT License +- system-configuration 0.6.1 : (MIT License OR Apache License 2.0) +- system-configuration-sys 0.6.0: [https://crates.io/crates/system-configuration-sys](https://crates.io/crates/system-configuration-sys) : (MIT License OR Apache License 2.0) +- system-deps 6.2.2: [https://crates.io/crates/system-deps](https://crates.io/crates/system-deps) : (MIT License OR Apache License 2.0) +- tafia/quick-xml 0.36.2 : MIT License +- tailhook/humantime 2.1.0: [https://github.com/tailhook/humantime](https://github.com/tailhook/humantime) : (MIT License OR Apache License 2.0) +- tailhook/quick-error 1.2.3: [http://github.com/rossmacarthur/quick-error2](http://github.com/rossmacarthur/quick-error2) : (MIT License OR Apache License 2.0) +- tailhook/quick-error 2.0.1: [http://github.com/rossmacarthur/quick-error2](http://github.com/rossmacarthur/quick-error2) : (MIT License OR Apache License 2.0) +- tap 1.0.1: [https://github.com/myrrlyn/tap](https://github.com/myrrlyn/tap) : MIT License +- target-lexicon 0.12.16: [https://crates.io/crates/target-lexicon](https://crates.io/crates/target-lexicon) : Apache License 2.0 with Exceptions +- tar (Rust) 0.4.43: [https://github.com/alexcrichton/tar-rs](https://github.com/alexcrichton/tar-rs) : (MIT License OR Apache License 2.0) +- TedDriggs/darling 0.20.10 : MIT License +- TedDriggs/ident_case 1.0.1: [https://github.com/TedDriggs/ident_case.git](https://github.com/TedDriggs/ident_case.git) : (MIT License OR Apache License 2.0) +- thiserror 1.0.68 : (MIT License OR Apache License 2.0) +- thiserror-impl 1.0.68 : (MIT License OR Apache License 2.0) +- tiff 0.9.1: [https://crates.io/crates/tiff](https://crates.io/crates/tiff) : MIT License +- tinystr: [https://crates.io/crates/tinystr](https://crates.io/crates/tinystr) : (MIT License OR Apache License 2.0) +- tinyvec 1.8.0: [https://crates.io/crates/tinyvec](https://crates.io/crates/tinyvec) : (zlib License OR MIT License OR Apache License 2.0) +- tinyvec_macros 0.1.1: [https://crates.io/crates/tinyvec_macros](https://crates.io/crates/tinyvec_macros) : (zlib License OR MIT License OR Apache License 2.0) +- tokenizers 0.20.3: [https://github.com/epwalsh/tokenizers](https://github.com/epwalsh/tokenizers) : Apache License 2.0 +- tokio 1.41.0: [https://tokio.rs](https://tokio.rs) : MIT License +- tokio-macros 2.4.0: [https://tokio.rs](https://tokio.rs) : MIT License +- tokio-native-tls 0.3.1: [https://crates.io/crates/tokio-native-tls](https://crates.io/crates/tokio-native-tls) : MIT License +- tokio-rs/bytes 1.8.0: [https://github.com/carllerche/bytes](https://github.com/carllerche/bytes) : MIT License +- tokio-rustls 0.26.0: [https://github.com/tokio-rs/tls](https://github.com/tokio-rs/tls) : (MIT License OR Apache License 2.0) +- tokio-util 0.7.12: [https://tokio.rs](https://tokio.rs) : MIT License +- toml_datetime 0.6.8: [https://github.com/toml-rs/toml](https://github.com/toml-rs/toml) : (MIT License OR Apache License 2.0) +- toml-rs 0.8.19: [https://crates.io/crates/toml](https://crates.io/crates/toml) : (MIT License OR Apache License 2.0) +- tower-rs/tower 0.3.3: [https://github.com/tower-rs/tower](https://github.com/tower-rs/tower) : MIT License +- tracing 0.1.40: [https://tokio.rs](https://tokio.rs) : MIT License +- tracing-attributes 0.1.27: [https://tokio.rs](https://tokio.rs) : MIT License +- tracing-core 0.1.32: [https://tokio.rs](https://tokio.rs) : MIT License +- ug 0.0.2: [https://crates.io/crates/ug](https://crates.io/crates/ug) : (MIT License OR Apache License 2.0) +- unarray 0.1.4: [https://crates.io/crates/unarray](https://crates.io/crates/unarray) : (MIT License OR Apache License 2.0) +- unescape 0.1.0: [https://crates.io/crates/unescape](https://crates.io/crates/unescape) : MIT License +- unicode_categories 0.1.1: [https://crates.io/crates/unicode_categories](https://crates.io/crates/unicode_categories) : (MIT License OR Apache License 2.0) +- unicode-ident 1.0.13 : (Unicode License Agreement Data Files and Software (2016) AND (MIT License OR Apache License 2.0)) +- unicode-normalization-alignments 0.1.12: [https://github.com/n1t0/unicode-normalization](https://github.com/n1t0/unicode-normalization) : (MIT License OR Apache License 2.0) +- unicode-org/icu4x 0.1.4: [https://github.com/unicode-org/icu4x#readme](https://github.com/unicode-org/icu4x#readme) : Unicode License Agreement - Data Files and Software (2016) +- unicode-org/icu4x 1.5.1: [https://github.com/unicode-org/icu4x#readme](https://github.com/unicode-org/icu4x#readme) : Unicode License v3 +- unicode-org/icu4x: [https://github.com/unicode-org/icu4x#readme](https://github.com/unicode-org/icu4x#readme) : Unicode License v3 +- unicode-properties 0.1.3: [https://github.com/unicode-rs/unicode-properties](https://github.com/unicode-rs/unicode-properties) : (MIT License OR Apache License 2.0) +- unicode-rs/unicode-normalization 0.1.24: [https://github.com/unicode-rs/unicode-normalization](https://github.com/unicode-rs/unicode-normalization) : (MIT License AND Apache License 2.0) +- unicode-rs/unicode-segmentation 1.12.0: [https://github.com/unicode-rs/unicode-segmentation](https://github.com/unicode-rs/unicode-segmentation) : (MIT License OR Apache License 2.0) +- unicode-rs/unicode-width 0.1.14: [https://github.com/unicode-rs/unicode-width](https://github.com/unicode-rs/unicode-width) : (MIT License OR Apache License 2.0) +- ureq 2.10.1 : (MIT License OR Apache License 2.0) +- utf16_iter 1.0.5: [https://docs.rs/utf16_iter/](https://docs.rs/utf16_iter/) : (MIT License OR Apache License 2.0) +- utf8_iter 1.0.4: [https://docs.rs/utf8_iter/](https://docs.rs/utf8_iter/) : (MIT License OR Apache License 2.0) +- uuid-rs/uuid 1.11.0: [http://docs.rs/uuid](http://docs.rs/uuid) : (MIT License OR Apache License 2.0) +- vcpkg-rs 0.2.15: [https://docs.rs/vcpkg](https://docs.rs/vcpkg) : (MIT License OR Apache License 2.0) +- version-compare 0.2.0: [https://github.com/timvisee/version-compare](https://github.com/timvisee/version-compare) : MIT License +- wait-timeout 0.2.0: [https://github.com/alexcrichton/wait-timeout](https://github.com/alexcrichton/wait-timeout) : (MIT License OR Apache License 2.0) +- wasi 0.11.0+wasi-snapshot-preview1 : (MIT License OR Apache License 2.0 with Exceptions OR Apache License 2.0) +- wasite 0.1.0: [https://github.com/ardaku/wasite/blob/stable/CHANGELOG.md](https://github.com/ardaku/wasite/blob/stable/CHANGELOG.md) : (MIT License OR Apache License 2.0 OR Boost Software License 1.0) +- wasm-bindgen 0.2.95: [https://github.com/rustwasm/wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) : (MIT License OR Apache License 2.0) +- wasm-bindgen 0.3.72: [https://github.com/rustwasm/wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) : (MIT License OR Apache License 2.0) +- wasm-bindgen 0.4.45: [https://github.com/rustwasm/wasm-bindgen](https://github.com/rustwasm/wasm-bindgen) : (MIT License OR Apache License 2.0) +- wasm-bindgen-macro 0.2.95: [https://rustwasm.github.io/wasm-bindgen/](https://rustwasm.github.io/wasm-bindgen/) : (MIT License OR Apache License 2.0) +- wasm-bindgen-macro-support 0.2.95: [https://rustwasm.github.io/wasm-bindgen/](https://rustwasm.github.io/wasm-bindgen/) : (MIT License OR Apache License 2.0) +- wasm-bindgen-shared 0.2.95: [https://rustwasm.github.io/wasm-bindgen/](https://rustwasm.github.io/wasm-bindgen/) : (MIT License OR Apache License 2.0) +- wasm-streams 0.4.2 : (MIT License OR Apache License 2.0) +- webpki-roots 0.26.6: [https://github.com/ctz/webpki-roots](https://github.com/ctz/webpki-roots) : Mozilla Public License 2.0 +- weezl 0.1.8: [https://crates.io/crates/weezl](https://crates.io/crates/weezl) : (MIT License OR Apache License 2.0) +- whoami 1.5.2 : (MIT License OR Apache License 2.0 OR Boost Software License 1.0) +- winapi-i686-pc-windows-gnu 0.4.0: [https://crates.io/crates/winapi-i686-pc-windows-gnu](https://crates.io/crates/winapi-i686-pc-windows-gnu) : (MIT License OR Apache License 2.0) +- winapi-rs 0.3.9: [https://crates.io/crates/winapi](https://crates.io/crates/winapi) : (MIT License AND Apache License 2.0) +- winapi-util 0.1.9: [https://github.com/BurntSushi/winapi-util](https://github.com/BurntSushi/winapi-util) : (MIT License OR The Unlicense) +- winapi-x86_64-pc-windows-gnu 0.4.0: [https://crates.io/crates/winapi-x86_64-pc-windows-gnu](https://crates.io/crates/winapi-x86_64-pc-windows-gnu) : (MIT License OR Apache License 2.0) +- windows_aarch64_gnullvm 0.48.5 : (MIT License OR Apache License 2.0) +- windows_aarch64_gnullvm 0.52.6 : (MIT License OR Apache License 2.0) +- windows_aarch64_msvc 0.48.5 : (MIT License OR Apache License 2.0) +- windows_aarch64_msvc 0.52.6 : (MIT License OR Apache License 2.0) +- windows-core 0.52.0 : (MIT License OR Apache License 2.0) +- windows-core 0.57.0 : (MIT License OR Apache License 2.0) +- windows_i686_gnu 0.48.5 : (MIT License OR Apache License 2.0) +- windows_i686_gnu 0.52.6 : (MIT License OR Apache License 2.0) +- windows_i686_msvc 0.48.5 : (MIT License OR Apache License 2.0) +- windows_i686_msvc 0.52.6 : (MIT License OR Apache License 2.0) +- windows-implement 0.57.0: [https://crates.io/crates/windows-implement](https://crates.io/crates/windows-implement) : (MIT License OR Apache License 2.0) +- windows-interface 0.57.0: [https://crates.io/crates/windows-interface](https://crates.io/crates/windows-interface) : (MIT License OR Apache License 2.0) +- windows-sys 0.48.0 : (MIT License OR Apache License 2.0) +- windows-sys 0.52.0 : (MIT License OR Apache License 2.0) +- windows-sys 0.59.0 : (MIT License OR Apache License 2.0) +- windows-targets 0.48.5 : (MIT License OR Apache License 2.0) +- windows-targets 0.52.6 : (MIT License OR Apache License 2.0) +- windows_x86_64_gnu 0.48.5 : (MIT License OR Apache License 2.0) +- windows_x86_64_gnu 0.52.6 : (MIT License OR Apache License 2.0) +- windows_x86_64_gnullvm 0.48.5 : (MIT License OR Apache License 2.0) +- windows_x86_64_gnullvm 0.52.6 : (MIT License OR Apache License 2.0) +- windows_x86_64_msvc 0.48.5 : (MIT License OR Apache License 2.0) +- windows_x86_64_msvc 0.52.6 : (MIT License OR Apache License 2.0) +- winnow 0.6.20 : MIT License +- write16 1.0.0: [https://docs.rs/write16/](https://docs.rs/write16/) : (MIT License OR Apache License 2.0) +- writeable: [https://crates.io/crates/writeable](https://crates.io/crates/writeable) : +- wyz 0.5.1: [https://myrrlyn.net/crates/wyz](https://myrrlyn.net/crates/wyz) : MIT License +- yansi-term 0.1.2: [https://github.com/botika/yansi-term](https://github.com/botika/yansi-term) : MIT License +- yoke 0.7.4: [https://crates.io/crates/yoke](https://crates.io/crates/yoke) : Unicode License v3 +- yoke-derive 0.7.4: [https://crates.io/crates/yoke-derive](https://crates.io/crates/yoke-derive) : Unicode License v3 +- zerocopy 0.7.35 : (MIT License OR BSD 2-clause "Simplified" License OR Apache License 2.0) +- zerocopy-derive 0.7.35 : (MIT License OR BSD 2-clause "Simplified" License OR Apache License 2.0) +- zeroize 1.8.1: [https://github.com/iqlusioninc/crates/](https://github.com/iqlusioninc/crates/) : (MIT License OR Apache License 2.0) +- zerovec: [https://crates.io/crates/zerovec](https://crates.io/crates/zerovec) : +- zerovec-derive 0.10.3: [https://crates.io/crates/zerovec-derive](https://crates.io/crates/zerovec-derive) : Unicode License v3 +- zip 1.1.4: [https://crates.io/crates/zip](https://crates.io/crates/zip) : MIT License +- zune-core 0.4.12: [https://github.com/etemesi254/zune-image/tree/dev/zune-core](https://github.com/etemesi254/zune-image/tree/dev/zune-core) : (zlib License OR MITLicense OR Apache License 2.0) +- zune-inflate 0.2.54: [https://github.com/etemesi254/zune-image/tree/main/zune-inflate](https://github.com/etemesi254/zune-image/tree/main/zune-inflate) : (zlib License OR MIT License OR Apache License 2.0) +- zune-jpeg 0.4.13: [https://crates.io/crates/zune-jpeg](https://crates.io/crates/zune-jpeg) : (zlib License OR MIT License OR Apache License 2.0) + +### Full License Details + +``` +(accelerate-src 0.3.2, addr2line 0.24.2, adler2 2.0.0, alexcrichton/cfg-if 1.0.0, alexcrichton/jobserver-rs 0.1.32, alexcrichton/openssl-probe 0.1.5, alexcrichton/proc-macro2 1.0.89, alexcrichton/rustc-demangle 0.1.24, alexcrichton/socket2-rs 0.5.7, allocator-api2 0.2.18, android-tzdata 0.1.1, android_system_properties 0.1.5, annotate-snippets 0.9.2, anstyle 1.0.10, anyhow 1.0.93, arbitrary 1.4.1, async-trait 0.1.83, atomic-traits 0.3.0, atomic-waker 1.1.2, autocfg 1.4.0, bit-vec 0.6.3, bit_field 0.10.2, bitflags 1.3.2, bitflags 2.6.0, bitstream-io 2.6.0, block-buffer 0.10.4, bluss/arrayvec 0.7.6, bluss/either 1.13.0, bluss/indexmap 2.6.0, bluss/scopeguard 1.2.0, BurntSushi/regex-automata 0.4.8, BurntSushi/ucd-generate 0.1.7, bytemuck 1.19.0, bytemuck_derive 1.8.0, camino 1.1.9, candle-core 0.7.2, candle-nn 0.7.2, candle-transformers 0.7.2, cargo_toml 0.19.2, cc-rs 1.1.36, cee-scape 0.2.0, cexpr 0.6.0, cfg-expr 0.15.8, chronotope/chrono 0.4.38, clap-cargo 0.14.1, clap-rs/clap 4.5.18, clap-rs/clap 4.5.20, colin-kiegel/rust-derive-builder 0.20.2, contain-rs/bit-set 0.5.3, cpufeatures 0.2.14, crossbeam-deque 0.8.5, crossbeam-epoch 0.9.18, crossbeam-utils 0.8.20, derive_arbitrary 1.4.1, digest 0.10.7, directories 5.0.1, dirs 5.0.1, dirs-sys 0.4.1, displaydoc 0.2.5, djc/quinn 0.11.5, djc/quinn 0.11.8, dtolnay/itoa 1.0.11, dtolnay/quote 1.0.37, dtolnay/ryu 1.0.18, encode_unicode 0.3.6, encoding_rs 0.8.35, enum-as-inner 0.6.1, enum-map 2.7.3, enum-map-derive 0.17.0, equivalent 1.0.1, errno 0.3.9, esaxx-rs 0.1.10, eyre 0.6.12, fallible-iterator 0.2.0, fastrand 2.1.1, fdeflate, filetime 0.2.25, fitzgen/bumpalo 3.16.0, fixedbitset 0.4.2, flate2 1.0.34, foreign-types 0.1.1, foreign-types 0.3.2, futures-task 0.3.31, getrandom 0.2.15, gif 0.13.1, gimli-rs 0.31.1, glob 0.3.1, hash32 0.3.1, heck 0.4.1, heck 0.5.0, hf-hub 0.3.2, home 0.5.9, httpdate 1.0.3, hyper-rustls 0.27.3, hyper-tls 0.6.0, hyperium/http 1.1.0, iana-time-zone 0.1.61, iana-time-zone-haiku 0.1.2, idna_adapter 1.2.0, image-rs/image 0.25.5, image-webp 0.2.0, imgref 1.11.0, indenter 0.3.3, ipnet 2.10.1, japaric/heapless 0.8.0, jedisct1/rust-siphash 0.3.11, jpeg-decoder 0.3.1, js-sys 0.3.72, Kimundi/rustc-version-rs 0.3.3, KyleMayes/clang-sys 1.8.1, lazy_static 1.5.0, libfuzzer-sys 0.4.7, linux-raw-sys 0.4.14, lock_api 0.4.12, log 0.4.22, matklad/once_cell 1.20.2, memmap2 0.9.5, microsoft/windows-rs 0.1.0, microsoft/windows-rs 0.2.0, microsoft/windows-rs 0.52.0, microsoft/windows-rs 0.52.6, microsoft/windows-rs 0.57.0, minimal-lexical 0.2.1, miniz_oxide 0.8.0, monostate 0.1.13, monostate-impl 0.1.13, native-tls 0.2.12, nox/serde_urlencoded 0.7.1, ntapi 0.4.1, num 0.4.3, num-bigint 0.4.6, num-derive 0.4.2, num-integer 0.1.46, num-iter 0.1.45, num-rational 0.4.2, num-traits 0.2.19, num_cpus 1.16.0, num_enum 0.7.3, num_enum_derive 0.7.3, object-rs 0.36.5, object_store 0.10.2, oci-spec 0.6.7, ocipkg 0.2.9, openssl-macros 0.1.1, ordian/toml_edit 0.22.22, paholg/typenum 1.17.0, parking_lot 0.12.3, parking_lot_core 0.9.10, paste 1.0.15, pest-parser 2.7.14, petgraph 0.6.5, pin-project-lite 0.2.15, pin-utils 0.1.0, pkg-config 0.3.31, png 0.17.14, portable-atomic 1.9.0, ppv-lite86 0.2.20, proc-macro-crate 3.2.0, proc-macro-error-attr2 2.0.0, proc-macro-error2 2.0.1, profiling 1.0.16, profiling-procmacros 1.0.16, proptest 1.5.0, qoi 0.4.1, quinn-udp 0.5.7, rand_core 0.6.4, rand_xorshift 0.3.0, rayon 1.10.0, rayon 1.12.1, rayon-cond 0.3.0, regex-syntax 0.8.5, rust-base64 0.13.1, rust-base64 0.22.1, rust-itertools/itertools 0.11.0, rust-itertools/itertools 0.12.1, rust-itertools/itertools 0.13.0, rust-lang-nursery/futures-rs 0.3.31, rust-lang/backtrace-rs 0.3.74, rust-lang/cargo 0.1.8, rust-lang/hashbrown 0.15.1, rust-libc 0.2.161, rust-num/num-complex 0.4.6, rust-openssl 0.10.68, rust-postgres 0.19.9, rust-postgres 0.2.8, rust-postgres 0.6.7, rust-postgres 0.7.12, rust-random/rand 0.8.5, rust-regex 1.11.1, rust-url 1.2.1, rust-url 2.3.1, rust-url, rust-xattr 1.3.1, rustc-hash 1.1.0, rustc-hash, RustCrypto/hashes 0.10.6, RustCrypto/hashes 0.10.8, RustCrypto/MACs 0.12.1, RustCrypto/traits 0.1.6, RustCrypto/traits 0.2.0, rustix 0.38.39, rustls, rustls-native-certs 0.8.0, rustls-pemfile 2.2.0, rustls-pki-types 1.10.0, rustversion 1.0.18, rusty-fork 0.3.0, safetensors 0.4.5, seanmonstar/httparse 1.9.5, seanmonstar/reqwest, security-framework 2.11.1, security-framework 2.12.0, semver 0.11.0, semver 1.0.23, semver-parser 0.10.2, seq-macro 0.3.5, serde, serde_cbor 0.11.2, serde_json 1.0.132, serde_plain 1.0.2, serde_spanned 0.6.8, SergioBenitez/version_check 0.9.5, servo/core-foundation-rs 0.8.7, servo/core-foundation-rs 0.9.4, servo/rust-fnv 1.0.7, servo/rust-smallvec 1.13.2, servo/unicode-bidi 0.3.17, shlex 1.3.0, signal-hook-registry 1.4.2, similar 2.6.0, snafu 0.7.5, snafu-derive 0.7.5, spm_precompiled 0.1.4, sptr 0.3.2, srijs/rust-crc32fast 1.4.2, stable_deref_trait 1.2.0, starkat99/half-rs 1.8.3, starkat99/half-rs 2.4.1, Stebalien/tempfile 3.13.0, stringprep 0.1.5, supports-color 2.1.0, supports-color 3.0.1, syn 1.0.109, syn 2.0.87, sync_wrapper 1.0.1, system-configuration 0.6.1, system-configuration-sys 0.6.0, system-deps 6.2.2, tailhook/humantime 2.1.0, tailhook/quick-error 1.2.3, tailhook/quick-error 2.0.1, tar (Rust) 0.4.43, TedDriggs/ident_case 1.0.1, thiserror 1.0.68, thiserror-impl 1.0.68, tinystr, tinyvec 1.8.0, tinyvec_macros 0.1.1, tokenizers 0.20.3, tokio-rustls 0.26.0, toml-rs 0.8.19, toml_datetime 0.6.8, ug 0.0.2, unarray 0.1.4, unicode-ident 1.0.13, unicode-normalization-alignments 0.1.12, unicode-properties 0.1.3, unicode-rs/unicode-normalization 0.1.24, unicode-rs/unicode-segmentation 1.12.0, unicode-rs/unicode-width 0.1.14, unicode_categories 0.1.1, ureq 2.10.1, utf16_iter 1.0.5, utf8_iter 1.0.4, uuid-rs/uuid 1.11.0, vcpkg-rs 0.2.15, wait-timeout 0.2.0, wasi 0.11.0+wasi-snapshot-preview1, wasite 0.1.0, wasm-bindgen 0.2.95, wasm-bindgen 0.3.72, wasm-bindgen 0.4.45, wasm-bindgen-macro 0.2.95, wasm-bindgen-macro-support 0.2.95, wasm-bindgen-shared 0.2.95, wasm-streams 0.4.2, weezl 0.1.8, whoami 1.5.2, winapi-i686-pc-windows-gnu 0.4.0, winapi-rs 0.3.9, winapi-x86_64-pc-windows-gnu 0.4.0, windows-core 0.52.0, windows-core 0.57.0, windows-implement 0.57.0, windows-interface 0.57.0, windows-sys 0.48.0, windows-sys 0.52.0, windows-sys 0.59.0, windows-targets 0.48.5, windows-targets 0.52.6, windows_aarch64_gnullvm 0.48.5, windows_aarch64_gnullvm 0.52.6, windows_aarch64_msvc 0.48.5, windows_aarch64_msvc 0.52.6, windows_i686_gnu 0.48.5, windows_i686_gnu 0.52.6, windows_i686_msvc 0.48.5, windows_i686_msvc 0.52.6, windows_x86_64_gnu 0.48.5, windows_x86_64_gnu 0.52.6, windows_x86_64_gnullvm 0.48.5, windows_x86_64_gnullvm 0.52.6, windows_x86_64_msvc 0.48.5, windows_x86_64_msvc 0.52.6, write16 1.0.0, zerocopy 0.7.35, zerocopy-derive 0.7.35, zeroize 1.8.1, zune-core 0.4.12, zune-inflate 0.2.54, zune-jpeg 0.4.13) + +Apache License +Version 2.0, January 2004 +========================= +http://www.apache.org/licenses/ +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions +granted by this License. +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is +based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work by +the copyright owner or by an individual or Legal Entity authorized to submit on +behalf of the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent to the +Licensor or its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue tracking systems +that are managed by, or on behalf of, the Licensor for the purpose of discussing +and improving the Work, but excluding communication that is conspicuously marked +or otherwise designated in writing by the copyright owner as "Not a +Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of +whom a Contribution has been received by Licensor and subsequently incorporated +within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this +License, each Contributor hereby grants to You a perpetual, worldwide, +non-exclusive, no-charge, royalty-free, irrevocable copyright license to +reproduce, prepare Derivative Works of, publicly display, publicly perform, +sublicense, and distribute the Work and such Derivative Works in Source or Object +form. +3. Grant of Patent License. Subject to the terms and conditions of this License, +each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, and otherwise +transfer the Work, where such license applies only to those patent claims +licensable by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) with the Work to +which such Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Work or a Contribution incorporated within the Work constitutes +direct or contributory patent infringement, then any patent licenses granted to +You under this License for that Work shall terminate as of the date such +litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or +Derivative Works thereof in any medium, with or without modifications, and in +Source or Object form, provided that You meet the following conditions: + a. You must give any other recipients of the Work or Derivative Works a copy of + this License; and + b. You must cause any modified files to carry prominent notices stating that + You changed the files; and + c. You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices from + the Source form of the Work, excluding those notices that do not pertain to + any part of the Derivative Works; and + d. If the Work includes a "NOTICE" text file as part of its distribution, then + any Derivative Works that You distribute must include a readable copy of the + attribution notices contained within such NOTICE file, excluding those + notices that do not pertain to any part of the Derivative Works, in at least + one of the following places: within a NOTICE text file distributed as part of + the Derivative Works; within the Source form or documentation, if provided + along with the Derivative Works; or, within a display generated by the + Derivative Works, if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only and do + not modify the License. You may add Your own attribution notices within + Derivative Works that You distribute, alongside or as an addendum to the + NOTICE text from the Work, provided that such additional attribution notices + cannot be construed as modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any +Contribution intentionally submitted for inclusion in the Work by You to the +Licensor shall be under the terms and conditions of this License, without any +additional terms or conditions. Notwithstanding the above, nothing herein shall +supersede or modify the terms of any separate license agreement you may have +executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, +trademarks, service marks, or product names of the Licensor, except as required +for reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in +writing, Licensor provides the Work (and each Contributor provides its +Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied, including, without limitation, any warranties or +conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any risks +associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in +tort (including negligence), contract, or otherwise, unless required by +applicable law (such as deliberate and grossly negligent acts) or agreed to in +writing, shall any Contributor be liable to You for damages, including any +direct, indirect, special, incidental, or consequential damages of any character +arising as a result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, work stoppage, +computer failure or malfunction, or any and all other commercial damages or +losses), even if such Contributor has been advised of the possibility of such +damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or +Derivative Works thereof, You may choose to offer, and charge a fee for, +acceptance of support, warranty, indemnity, or other liability obligations and/or +rights consistent with this License. However, in accepting such obligations, You +may act only on Your own behalf and on Your sole responsibility, not on behalf of +any other Contributor, and only if You agree to indemnify, defend, and hold each +Contributor harmless for any liability incurred by, or claims asserted against, +such Contributor by reason of your accepting any such warranty or additional +liability. +END OF TERMS AND CONDITIONS +APPENDIX: How to apply the Apache License to your work +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also recommend +that a file or class name and description of purpose be included on the same +"printed page" as the copyright notice for easier identification within +third-party archives. + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, + Version 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law + or agreed to in writing, software distributed under the License is + distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the specific language + governing permissions and limitations under the License. +--- +Apache License 2.0 with Exceptions +(linux-raw-sys 0.4.14, rustix 0.38.39, target-lexicon 0.12.16, wasi 0.11.0+wasi-snapshot-preview1) +This license may contain an exception relative to the applicability of certain +provisions of the license and this exception may alter your specific obligations +when using it. The exact nature of the exception was not specified at the time of +discovery. You are advised to examine the project's license directly in order to +determine if it applies to your usage. +Apache License +Version 2.0, January 2004 +========================= +http://www.apache.org/licenses/ +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions +granted by this License. +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is +based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work by +the copyright owner or by an individual or Legal Entity authorized to submit on +behalf of the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent to the +Licensor or its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue tracking systems +that are managed by, or on behalf of, the Licensor for the purpose of discussing +and improving the Work, but excluding communication that is conspicuously marked +or otherwise designated in writing by the copyright owner as "Not a +Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of +whom a Contribution has been received by Licensor and subsequently incorporated +within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this +License, each Contributor hereby grants to You a perpetual, worldwide, +non-exclusive, no-charge, royalty-free, irrevocable copyright license to +reproduce, prepare Derivative Works of, publicly display, publicly perform, +sublicense, and distribute the Work and such Derivative Works in Source or Object +form. +3. Grant of Patent License. Subject to the terms and conditions of this License, +each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, and otherwise +transfer the Work, where such license applies only to those patent claims +licensable by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) with the Work to +which such Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim in a lawsuit) +alleging that the Work or a Contribution incorporated within the Work constitutes +direct or contributory patent infringement, then any patent licenses granted to +You under this License for that Work shall terminate as of the date such +litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or +Derivative Works thereof in any medium, with or without modifications, and in +Source or Object form, provided that You meet the following conditions: + a. You must give any other recipients of the Work or Derivative Works a copy of + this License; and + b. You must cause any modified files to carry prominent notices stating that + You changed the files; and + c. You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices from + the Source form of the Work, excluding those notices that do not pertain to + any part of the Derivative Works; and + d. If the Work includes a "NOTICE" text file as part of its distribution, then + any Derivative Works that You distribute must include a readable copy of the + attribution notices contained within such NOTICE file, excluding those + notices that do not pertain to any part of the Derivative Works, in at least + one of the following places: within a NOTICE text file distributed as part of + the Derivative Works; within the Source form or documentation, if provided + along with the Derivative Works; or, within a display generated by the + Derivative Works, if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only and do + not modify the License. You may add Your own attribution notices within + Derivative Works that You distribute, alongside or as an addendum to the + NOTICE text from the Work, provided that such additional attribution notices + cannot be construed as modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any +Contribution intentionally submitted for inclusion in the Work by You to the +Licensor shall be under the terms and conditions of this License, without any +additional terms or conditions. Notwithstanding the above, nothing herein shall +supersede or modify the terms of any separate license agreement you may have +executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, +trademarks, service marks, or product names of the Licensor, except as required +for reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in +writing, Licensor provides the Work (and each Contributor provides its +Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied, including, without limitation, any warranties or +conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any risks +associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in +tort (including negligence), contract, or otherwise, unless required by +applicable law (such as deliberate and grossly negligent acts) or agreed to in +writing, shall any Contributor be liable to You for damages, including any +direct, indirect, special, incidental, or consequential damages of any character +arising as a result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, work stoppage, +computer failure or malfunction, or any and all other commercial damages or +losses), even if such Contributor has been advised of the possibility of such +damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or +Derivative Works thereof, You may choose to offer, and charge a fee for, +acceptance of support, warranty, indemnity, or other liability obligations and/or +rights consistent with this License. However, in accepting such obligations, You +may act only on Your own behalf and on Your sole responsibility, not on behalf of +any other Contributor, and only if You agree to indemnify, defend, and hold each +Contributor harmless for any liability incurred by, or claims asserted against, +such Contributor by reason of your accepting any such warranty or additional +liability. +END OF TERMS AND CONDITIONS +APPENDIX: How to apply the Apache License to your work +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also recommend +that a file or class name and description of purpose be included on the same +"printed page" as the copyright notice for easier identification within +third-party archives. + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, + Version 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law + or agreed to in writing, software distributed under the License is + distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the specific language + governing permissions and limitations under the License. +--- +BSD 2-clause "Simplified" License +(av1-grain 0.2.3, rav1e 0.3.8, rav1e 0.7.1, zerocopy 0.7.35, zerocopy-derive 0.7.35) +BSD Two Clause License +====================== +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +--- +BSD 3-clause "New" or "Revised" License +(avif-serialize 0.8.2, cavif (Rust) 0.11.11, encoding_rs 0.8.35, exr 1.73.0, hermitcore/libhermit-rs 0.3.9, hermitcore/libhermit-rs 0.4.0, instant 0.1.13, lebe 0.5.2, num_enum 0.7.3, num_enum_derive 0.7.3, rust-lang/rust-bindgen 0.70.1, subtle 2.6.1) +Copyright (c) , +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--- +BSD Zero Clause License +(adler2 2.0.0) +BSD Zero Clause License +======================= +Copyright (C) 2006 by Rob Landley +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. +--- +Boost Software License 1.0 +(dtolnay/ryu 1.0.18, wasite 0.1.0, whoami 1.5.2) +Boost Software License - Version 1.0 +==================================== +August 17th, 2003 +----------------- +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by this +license (the "Software") to use, reproduce, display, distribute, execute, and +transmit the Software, and to prepare derivative works of the Software, and to +permit third-parties to whom the Software is furnished to do so, all subject to +the following: +The copyright notices in the Software and this entire statement, including the +above license grant, this restriction and the following disclaimer, must be +included in all copies of the Software, in whole or in part, and all derivative +works of the Software, unless such copies or derivative works are solely in the +form of machine-executable object code generated by a source language processor. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE +COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES +OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--- +Creative Commons Zero v1.0 Universal +(imgref 1.11.0) +Creative Commons CC0 1.0 Universal +================================== +Creative Commons Legal Code +--------------------------- +CC0 1.0 Universal +----------------- +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL +SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT +RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. +CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE +INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES +RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED +HEREUNDER. +Statement of Purpose +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of authorship +and/or a database (each, a "Work"). +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific works +("Commons") that the public can reliably and without fear of later claims of +infringement build upon, modify, incorporate in other works, reuse and +redistribute as freely as possible in any form whatsoever and for any purposes, +including without limitation commercial purposes. These owners may contribute to +the Commons to promote the ideal of a free culture and the further production of +creative, cultural and scientific works, or to gain reputation or greater +distribution for their Work in part through the use and efforts of others. +For these and/or other purposes and motivations, and without any expectation of +additional consideration or compensation, the person associating CC0 with a Work +(the "Affirmer"), to the extent that he or she is an owner of Copyright and +Related Rights in the Work, voluntarily elects to apply CC0 to the Work and +publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. +1. Copyright and Related Rights. A Work made available under CC0 may be protected +by copyright and related or neighboring rights ("Copyright and Related Rights"). +Copyright and Related Rights include, but are not limited to, the following: + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, subject + to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data in a + Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and +Related Rights and associated claims and causes of action, whether now known or +unknown (including existing as well as future claims and causes of action), in +the Work + i. in all territories worldwide, + ii. for the maximum duration provided by applicable law or treaty (including + future time extensions), + iii. in any current or future medium and for any number of copies, and + iv. for any purpose whatsoever, including without limitation commercial, + advertising or promotional purposes (the "Waiver"). +Affirmer makes the Waiver for the benefit of each member of the public at large +and to the detriment of Affirmer's heirs and successors, fully intending that +such Waiver shall not be subject to revocation, rescission, cancellation, +termination, or any other legal or equitable action to disrupt the quiet +enjoyment of the Work by the public as contemplated by Affirmer's express +Statement of Purpose. +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver shall +be preserved to the maximum extent permitted taking into account Affirmer's +express Statement of Purpose. In addition, to the extent the Waiver is so judged +Affirmer hereby grants to each affected person a royalty-free, non transferable, +non sublicensable, non exclusive, irrevocable and unconditional license to +exercise Affirmer's Copyright and Related Rights in the Work + i. in all territories worldwide, + ii. for the maximum duration provided by applicable law or treaty (including + future time extensions), + iii. in any current or future medium and for any number of copies, and + iv. for any purpose whatsoever, including without limitation commercial, + advertising or promotional purposes (the "License"). +The License shall be deemed effective as of the date CC0 was applied by Affirmer +to the Work. Should any part of the License for any reason be judged legally +invalid or ineffective under applicable law, such partial invalidity or +ineffectiveness shall not invalidate the remainder of the License, and in such +case Affirmer hereby affirms that he or she will not + i. exercise any of his or her remaining Copyright and Related Rights in the + Work or + ii. assert any associated claims and causes of action with respect to the + Work, in either case contrary to Affirmer's express Statement of Purpose. +4. Limitations and Disclaimers. + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or warranties of + any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or other + defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons that + may apply to the Work or any use thereof, including without limitation any + person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions or + other rights required for any use of the Work. + d. Affirmer understands and acknowledges that Creative Commons is not a party + to this document and has no duty or obligation with respect to this CC0 or + use of the Work. +--- +ISC License +(briansmith/ring 0.17.8, briansmith/untrusted 0.9.0, hyper-rustls 0.27.3, is_ci 1.2.0, nagisa/rust_libloading 0.8.5, rustls, rustls-native-certs 0.8.0, rustls-pemfile 2.2.0, rustls-webpki 0.102.8) + +ISC License (ISCL) +================== +Copyright (c) 4-digit year, Company or Person's Name +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +#### MIT License +(unicode_categories 0.1.1) +Copyright (c) 2015 The unicode-categories Developers +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(TedDriggs/ident_case 1.0.1) +MIT License +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(foreign-types 0.1.1, foreign-types 0.3.2) +Copyright (c) 2017 The foreign-types Developers +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(Kimundi/rustc-version-rs 0.3.3) +Copyright (c) 2016 The Rust Project Developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(tailhook/humantime 2.1.0) +Copyright (c) 2016 The humantime Developers +Includes parts of http date with the following copyright: +Copyright (c) 2016 Pyfisch +Includes portions of musl libc with the following copyright: +Copyright © 2005-2013 Rich Felker +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(rusty-fork 0.3.0) +Copyright (c) 2016 FullContact, Inc +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(pin-utils 0.1.0) +Copyright (c) 2018 The pin-utils authors +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(RustCrypto/traits 0.2.0) +Copyright (c) 2020 The RustCrypto Project Developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(rust-url 1.2.1) +Copyright (c) 2013-2016 The rust-url developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(color_quant 1.1.0) +The MIT License (MIT) +Copyright (c) 2016 PistonDevelopers +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(doc-comment 0.3.3) +MIT License +Copyright (c) 2018 Guillaume Gomez +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(nox/serde_urlencoded 0.7.1) +Copyright (c) 2016 Anthony Ramine +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(RustCrypto/MACs 0.12.1) +Copyright (c) 2017 Artyom Pavlov +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(tailhook/quick-error 1.2.3, tailhook/quick-error 2.0.1) +Copyright (c) 2015 The quick-error Developers +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(servo/rust-fnv 1.0.7) +Copyright (c) 2017 Contributors +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(minimal-lexical 0.2.1, rustc-hash 1.1.0) +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(serde_cbor 0.11.2) +Copyright (c) 2015 Pyfisch +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +--- +MIT License +(fallible-iterator 0.2.0) +Copyright (c) 2015 The rust-openssl-verify Developers +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(bitflags 1.3.2, winapi-rs 0.3.9) +License: MIT +Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +--- +MIT License +(funty 2.0.0) +MIT License +Copyright (c) 2020 myrrlyn (Alexander Payne) +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(rand_chacha 0.3.1, rand_xorshift 0.3.0) +Copyright 2018 Developers of the Rand project +Copyright (c) 2014 The Rust Project Developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(radium 0.7.0) +MIT License +Copyright (c) 2019 kneecaw (Nika Layzell) +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(tap 1.0.1) +MIT License +Copyright (c) 2017 Elliot Linder +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(semver 0.11.0) +Copyright (c) 2014 The Rust Project Developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(bit-vec 0.6.3) +Copyright (c) 2015 The Rust Project Developers +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(stable_deref_trait 1.2.0) +Copyright (c) 2017 Robert Grosse +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(semver-parser 0.10.2) +Copyright (c) 2016 Steve Klabnik +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(alexcrichton/cfg-if 1.0.0, alexcrichton/openssl-probe 0.1.5, wait-timeout 0.2.0) +Copyright (c) 2014 Alex Crichton +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(microsoft/windows-rs 0.1.2) +MIT License + Copyright (c) Microsoft Corporation. +Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +--- +MIT License +(vcpkg-rs 0.2.15) +Copyright (c) 2017 Jim McGrath +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +MIT License +(clap-rs/clap 0.7.2) +The MIT License (MIT) +Copyright (c) 2015 Kevin B. Knapp +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(accelerate-src 0.3.2, addr2line 0.24.2, adler2 2.0.0, alexcrichton/proc-macro2 1.0.89, alexcrichton/rustc-demangle 0.1.24, alexcrichton/socket2-rs 0.5.7, aligned-vec 0.5.0, allocator-api2 0.2.18, android-tzdata 0.1.1, android_system_properties 0.1.5, annotate-snippets 0.9.2, anstyle 1.0.10, anyhow 1.0.93, arbitrary 1.4.1, arg_enum_proc_macro 0.3.4, assert-json-diff 2.0.2, async-trait 0.1.83, atomic-traits 0.3.0, atomic-waker 1.1.2, bit_field 0.10.2, bitflags 2.6.0, bitstream-io 2.6.0, bitvec 1.0.1, block-buffer 0.10.4, bluss/indexmap 2.6.0, briansmith/ring 0.17.8, built 0.7.5, BurntSushi/regex-automata 0.4.8, BurntSushi/rust-memchr 2.7.4, BurntSushi/same-file 1.0.6, bytemuck 1.19.0, bytemuck_derive 1.8.0, byteorder-lite 0.1.0, camino 1.1.9, candle-core 0.7.2, candle-nn 0.7.2, candle-transformers 0.7.2, cargo_toml 0.19.2, cc-rs 1.1.36, cee-scape 0.2.0, cfg-expr 0.15.8, cfg_aliases 0.2.1, chronotope/chrono 0.4.38, clap-cargo 0.14.1, clap-rs/clap 4.5.18, clap-rs/clap 4.5.20, console-rs/console 0.15.8, contain-rs/bit-set 0.5.3, convert_case 0.6.0, cpufeatures 0.2.14, crossbeam-deque 0.8.5, crossbeam-epoch 0.9.18, crossbeam-utils 0.8.20, crunchy 0.2.2, derive_arbitrary 1.4.1, dguo/strsim-rs 0.11.1, digest 0.10.7, directories 5.0.1, dirs 5.0.1, dirs-sys 0.4.1, displaydoc 0.2.5, djc/quinn 0.11.5, djc/quinn 0.11.8, dyn-stack 0.10.0, encoding_rs 0.8.35, enum-as-inner 0.6.1, enum-map 2.7.3, enum-map-derive 0.17.0, equivalent 1.0.1, errno 0.3.9, eyre 0.6.12, fancy-regex 0.13.0, fastrand 2.1.1, fdeflate, filetime 0.2.25, fixedbitset 0.4.2, flate2 1.0.34, futures-task 0.3.31, gemm 0.17.1, gemm-c32 0.17.1, gemm-c64 0.17.1, gemm-common 0.17.1, gemm-f16 0.17.1, gemm-f32 0.17.1, gemm-f64 0.17.1, generic-array 0.14.7, getrandom 0.2.15, getset 0.1.3, gif 0.13.1, glob 0.3.1, hash32 0.3.1, heck 0.4.1, heck 0.5.0, home 0.5.9, httpdate 1.0.3, hyper-rustls 0.27.3, hyper-tls 0.6.0, hyper-util, hyperium/h2 0.4.6, hyperium/http-body 0.1.2, hyperium/http-body 1.0.1, hyperium/mime 0.3.17, iana-time-zone 0.1.61, iana-time-zone-haiku 0.1.2, idna_adapter 1.2.0, image-rs/image 0.25.5, image-webp 0.2.0, indenter 0.3.3, intel-mkl-tool 0.8.1, interpolate_name 0.2.4, ipnet 2.10.1, is-terminal 0.4.13, japaric/heapless 0.8.0, jpeg-decoder 0.3.1, js-sys 0.3.72, libfuzzer-sys 0.4.7, libm 0.2.11, libredox 0.1.3, linux-raw-sys 0.4.14, lock_api 0.4.12, log 0.4.22, loop9 0.1.5, lru 0.12.5, macro_rules_attribute 0.2.0, macro_rules_attribute-proc_macro 0.2.0, maybe-rayon 0.1.1, memmap2 0.9.5, microsoft/windows-rs 0.1.0, microsoft/windows-rs 0.2.0, microsoft/windows-rs 0.52.0, microsoft/windows-rs 0.52.6, miniz_oxide 0.8.0, mitsuhiko/indicatif 0.17.8, mockito 1.5.0, monostate 0.1.13, monostate-impl 0.1.13, mvdnes/spin-rs 0.9.8, native-tls 0.2.12, new_debug_unreachable 1.0.6, noop_proc_macro 0.3.0, ntapi 0.4.1, num 0.4.3, num-bigint 0.4.6, num-derive 0.4.2, num-integer 0.1.46, num-iter 0.1.45, num-rational 0.4.2, num-traits 0.2.19, num_cpus 1.16.0, num_enum 0.7.3, num_enum_derive 0.7.3, number_prefix 0.4.0, object_store 0.10.2, ocipkg 0.2.9, oli-obk/cargo_metadata 0.18.1, onig 6.4.0, onig_sys 69.8.1, openssl-macros 0.1.1, owo-colors 4.1.0, paholg/typenum 1.17.0, parking_lot_core 0.9.10, paste 1.0.15, pathsearch 0.2.0, petgraph 0.6.5, pgrx 0.12.8, pgrx-bindgen 0.12.8, pgrx-macros 0.12.8, pgrx-pg-config 0.12.8, pgrx-pg-sys 0.12.8, pgrx-sql-entity-graph 0.12.8, pgrx-tests 0.12.8, pin-project-lite 0.2.15, pkg-config 0.3.31, png 0.17.14, portable-atomic 1.9.0, ppv-lite86 0.2.20, proc-macro-crate 3.2.0, proc-macro-error-attr2 2.0.0, proc-macro-error2 2.0.1, profiling 1.0.16, profiling-procmacros 1.0.16, proptest 1.5.0, pulp 0.18.22, qoi 0.4.1, quinn-udp 0.5.7, rand_core 0.6.4, rand_distr 0.4.3, raw-cpuid 10.7.0, rayon 1.10.0, rayon 1.12.1, rayon-cond 0.3.0, reborrow 0.5.5, redox-os 0.5.7, redox_users 0.4.6, regex-syntax 0.8.5, rust-base64 0.13.1, rust-base64 0.22.1, rust-hyper 1.5.0, rust-itertools/itertools 0.13.0, rust-lang-nursery/futures-rs 0.3.31, rust-lang/backtrace-rs 0.3.74, rust-lang/cargo 0.1.8, rust-lang/hashbrown 0.15.1, rust-libc 0.2.161, rust-mio 1.0.2, rust-nom 7.1.3, rust-num/num-complex 0.4.6, rust-openssl 0.9.104, rust-phf 0.11.2, rust-postgres 0.19.9, rust-postgres 0.2.8, rust-postgres 0.6.7, rust-postgres 0.7.12, rust-random/rand 0.8.5, rust-regex 1.11.1, rust-rgb 0.8.50, rust-url, rustc-hash, RustCrypto/hashes 0.10.6, RustCrypto/hashes 0.10.8, RustCrypto/traits 0.1.6, rustix 0.38.39, rustls, rustls-native-certs 0.8.0, rustls-pemfile 2.2.0, rustls-pki-types 1.10.0, rustversion 1.0.18, seahash 4.1.0, seanmonstar/httparse 1.9.5, seanmonstar/reqwest, seanmonstar/try-lock 0.2.5, seanmonstar/want 0.3.1, security-framework 2.11.1, security-framework 2.12.0, semver 1.0.23, seq-macro 0.3.5, serde, serde_plain 1.0.2, serde_spanned 0.6.8, SergioBenitez/version_check 0.9.5, servo/core-foundation-rs 0.8.7, servo/core-foundation-rs 0.9.4, servo/unicode-bidi 0.3.17, shlex 1.3.0, signal-hook-registry 1.4.2, simd-adler32 0.3.7, simd_helpers 0.1.0, slab 0.4.9, snafu 0.7.5, snafu-derive 0.7.5, sptr 0.3.2, starkat99/half-rs 1.8.3, starkat99/half-rs 2.4.1, steffengy/schannel-rs 0.1.26, stringprep 0.1.5, strum-rs 0.26.3, strum-rs 0.26.4, syn 2.0.87, synstructure 0.13.1, sysctl 0.5.5, sysinfo-rs 0.30.13, sysinfo-rs 0.32.0, system-configuration 0.6.1, system-configuration-sys 0.6.0, system-deps 6.2.2, tafia/quick-xml 0.36.2, tar (Rust) 0.4.43, TedDriggs/darling 0.20.10, thiserror 1.0.68, thiserror-impl 1.0.68, tiff 0.9.1, tinystr, tinyvec 1.8.0, tinyvec_macros 0.1.1, tokio 1.41.0, tokio-macros 2.4.0, tokio-native-tls 0.3.1, tokio-rs/bytes 1.8.0, tokio-rustls 0.26.0, tokio-util 0.7.12, toml-rs 0.8.19, toml_datetime 0.6.8, tower-rs/tower 0.3.3, tracing 0.1.40, tracing-attributes 0.1.27, tracing-core 0.1.32, ug 0.0.2, unarray 0.1.4, unescape 0.1.0, unicode-ident 1.0.13, unicode-normalization-alignments 0.1.12, unicode-properties 0.1.3, unicode-rs/unicode-normalization 0.1.24, unicode-rs/unicode-segmentation 1.12.0, unicode-rs/unicode-width 0.1.14, ureq 2.10.1, utf16_iter 1.0.5, utf8_iter 1.0.4, uuid-rs/uuid 1.11.0, version-compare 0.2.0, wasi 0.11.0+wasi-snapshot-preview1, wasite 0.1.0, wasm-bindgen 0.2.95, wasm-bindgen 0.3.72, wasm-bindgen 0.4.45, wasm-bindgen-macro 0.2.95, wasm-bindgen-macro-support 0.2.95, wasm-bindgen-shared 0.2.95, wasm-streams 0.4.2, weezl 0.1.8, whoami 1.5.2, winapi-i686-pc-windows-gnu 0.4.0, winapi-util 0.1.9, winapi-x86_64-pc-windows-gnu 0.4.0, windows-core 0.52.0, windows-core 0.57.0, windows-implement 0.57.0, windows-interface 0.57.0, windows-sys 0.48.0, windows-sys 0.52.0, windows-sys 0.59.0, windows-targets 0.48.5, windows-targets 0.52.6, windows_aarch64_gnullvm 0.48.5, windows_aarch64_gnullvm 0.52.6, windows_aarch64_msvc 0.48.5, windows_aarch64_msvc 0.52.6, windows_i686_gnu 0.48.5, windows_i686_gnu 0.52.6, windows_i686_msvc 0.48.5, windows_i686_msvc 0.52.6, windows_x86_64_gnu 0.48.5, windows_x86_64_gnu 0.52.6, windows_x86_64_gnullvm 0.48.5, windows_x86_64_gnullvm 0.52.6, windows_x86_64_msvc 0.48.5, windows_x86_64_msvc 0.52.6, winnow 0.6.20, write16 1.0.0, wyz 0.5.1, yansi-term 0.1.2, zerocopy 0.7.35, zerocopy-derive 0.7.35, zeroize 1.8.1, zip 1.1.4, zune-core 0.4.12, zune-inflate 0.2.54, zune-jpeg 0.4.13) +The MIT License +=============== +Copyright (c) +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--- +MIT License +(encode_unicode 0.3.6) +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE +--- +MIT License +(cexpr 0.6.0) +(C) Copyright 2016 Jethro G. Beekman +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE +--- +Mozilla Public License 2.0 +(mackwic/colored 2.1.0, option-ext 0.2.0, webpki-roots 0.26.6) +Mozilla Public License +Version 2.0 +====================== +1. Definitions +-------------- + 1.1. "Contributor" + means each individual or legal entity that creates, contributes to the creation + of, or owns Covered Software. + 1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + 1.3. "Contribution" + means Covered Software of a particular Contributor. + 1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached the notice + in Exhibit A, the Executable Form of such Source Code Form, and Modifications + of such Source Code Form, in each case including portions thereof. + 1.5. "Incompatible With Secondary Licenses" + means + a. + that the initial Contributor has attached the notice described in Exhibit B + to the Covered Software; or + b. + that the Covered Software was made available under the terms of version 1.1 + or earlier of the License, but not also under the terms of a Secondary + License. + 1.6. "Executable Form" + means any form of the work other than Source Code Form. + 1.7. "Larger Work" + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + 1.8. "License" + means this document. + 1.9. "Licensable" + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed + by this License. + 1.10. "Modifications" + means any of the following: + a. + any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + b. + any new file in Source Code Form that contains any Covered Software. + 1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, process, and + apparatus claims, in any patent Licensable by such Contributor that would be + infringed, but for the grant of the License, by the making, using, selling, + offering for sale, having made, import, or transfer of either its Contributions + or its Contributor Version. + 1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public License, + Version 3.0, or any later versions of those licenses. + 1.13. "Source Code Form" + means the form of the work preferred for making modifications. + 1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this License. For + legal entities, "You" includes any entity that controls, is controlled by, or + is under common control with You. For purposes of this definition, "control" + means (a) the power, direct or indirect, to cause the direction or management + of such entity, whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial ownership of such + entity. +2. License Grants and Conditions +-------------------------------- + 2.1. Grants + Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive + license: + a. + under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, modify, + display, perform, distribute, and otherwise exploit its Contributions, + either on an unmodified basis, with Modifications, or as part of a Larger + Work; and + b. + under Patent Claims of such Contributor to make, use, sell, offer for sale, + have made, import, and otherwise transfer either its Contributions or its + Contributor Version. + 2.2. Effective Date + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + 2.3. Limitations on Grant Scope + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding + Section 2.1(b) above, no patent license is granted by a Contributor: + a. + for any code that a Contributor has removed from Covered Software; or + b. + for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + c. + under Patent Claims infringed by Covered Software in the absence of its + Contributions. + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the notice + requirements in Section 3.4). + 2.4. Subsequent Licenses + No Contributor makes additional grants as a result of Your choice to distribute + the Covered Software under a subsequent version of this License (see + Section 10.2) or under the terms of a Secondary License (if permitted under the + terms of Section 3.3). + 2.5. Representation + Each Contributor represents that the Contributor believes its Contributions are + its original creation(s) or it has sufficient rights to grant the rights to its + Contributions conveyed by this License. + 2.6. Fair Use + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + 2.7. Conditions + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. +3. Responsibilities +------------------- + 3.1. Distribution of Source Form + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form of + the Covered Software is governed by the terms of this License, and how they can + obtain a copy of this License. You may not attempt to alter or restrict the + recipients' rights in the Source Code Form. + 3.2. Distribution of Executable Form + If You distribute Covered Software in Executable Form then: + a. + such Covered Software must also be made available in Source Code Form, as + described in Section 3.1, and You must inform recipients of the Executable + Form how they can obtain a copy of such Source Code Form by reasonable + means in a timely manner, at a charge no more than the cost of distribution + to the recipient; and + b. + You may distribute such Executable Form under the terms of this License, or + sublicense it under different terms, provided that the license for the + Executable Form does not attempt to limit or alter the recipients' rights + in the Source Code Form under this License. + 3.3. Distribution of a Larger Work + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software with + a work governed by one or more Secondary Licenses, and the Covered Software is + not Incompatible With Secondary Licenses, this License permits You to + additionally distribute such Covered Software under the terms of such Secondary + License(s), so that the recipient of the Larger Work may, at their option, + further distribute the Covered Software under the terms of either this License + or such Secondary License(s). + 3.4. Notices + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations of + liability) contained within the Source Code Form of the Covered Software, + except that You may alter any license notices to the extent required to remedy + known factual inaccuracies. + 3.5. Application of Additional Terms + You may choose to offer, and to charge a fee for, warranty, support, indemnity + or liability obligations to one or more recipients of Covered Software. + However, You may do so only on Your own behalf, and not on behalf of any + Contributor. You must make it absolutely clear that any such warranty, support, + indemnity, or liability obligation is offered by You alone, and You hereby + agree to indemnify every Contributor for any liability incurred by such + Contributor as a result of warranty, support, indemnity or liability terms You + offer. You may include additional disclaimers of warranty and limitations of + liability specific to any jurisdiction. +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- +If it is impossible for You to comply with any of the terms of this License with +respect to some or all of the Covered Software due to statute, judicial order, or +regulation then You must: (a) comply with the terms of this License to the +maximum extent possible; and (b) describe the limitations and the code they +affect. Such description must be placed in a text file included with all +distributions of the Covered Software under this License. Except to the extent +prohibited by statute or regulation, such description must be sufficiently +detailed for a recipient of ordinary skill to be able to understand it. +5. Termination +-------------- + 5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, then + the rights granted under this License from a particular Contributor are + reinstated (a) provisionally, unless and until such Contributor explicitly and + finally terminates Your grants, and (b) on an ongoing basis, if such + Contributor fails to notify You of the non-compliance by some reasonable means + prior to 60 days after You have come back into compliance. Moreover, Your + grants from a particular Contributor are reinstated on an ongoing basis if such + Contributor notifies You of the non-compliance by some reasonable means, this + is the first time You have received notice of non-compliance with this License + from such Contributor, and You become compliant prior to 30 days after Your + receipt of the notice. + 5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, and + cross-claims) alleging that a Contributor Version directly or indirectly + infringes any patent, then the rights granted to You by any and all + Contributors for the Covered Software under Section 2.1 of this License shall + terminate. + 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. +6. Disclaimer of Warranty +------------------------- +Covered Software is provided under this License on an "as is" basis, without +warranty of any kind, either expressed, implied, or statutory, including, without +limitation, warranties that the Covered Software is free of defects, +merchantable, fit for a particular purpose or non-infringing. The entire risk as +to the quality and performance of the Covered Software is with You. Should any +Covered Software prove defective in any respect, You (not any Contributor) assume +the cost of any necessary servicing, repair, or correction. This disclaimer of +warranty constitutes an essential part of this License. No use of any Covered +Software is authorized under this License except under this disclaimer. +7. Limitation of Liability +-------------------------- +Under no circumstances and under no legal theory, whether tort (including +negligence), contract, or otherwise, shall any Contributor, or anyone who +distributes Covered Software as permitted above, be liable to You for any direct, +indirect, special, incidental, or consequential damages of any character +including, without limitation, damages for lost profits, loss of goodwill, work +stoppage, computer failure or malfunction, or any and all other commercial +damages or losses, even if such party shall have been informed of the possibility +of such damages. This limitation of liability shall not apply to liability for +death or personal injury resulting from such party's negligence to the extent +applicable law prohibits such limitation. Some jurisdictions do not allow the +exclusion or limitation of incidental or consequential damages, so this exclusion +and limitation may not apply to You. +8. Litigation +------------- +Any litigation relating to this License may be brought only in the courts of a +jurisdiction where the defendant maintains its principal place of business and +such litigation shall be governed by laws of that jurisdiction, without reference +to its conflict-of-law provisions. Nothing in this Section shall prevent a +party's ability to bring cross-claims or counter-claims. +9. Miscellaneous +---------------- +This License represents the complete agreement concerning the subject matter +hereof. If any provision of this License is held to be unenforceable, such +provision shall be reformed only to the extent necessary to make it enforceable. +Any law or regulation which provides that the language of a contract shall be +construed against the drafter shall not be used to construe this License against +a Contributor. +10. Versions of the License +--------------------------- + 10.1. New Versions + Mozilla Foundation is the license steward. Except as provided in Section 10.3, + no one other than the license steward has the right to modify or publish new + versions of this License. Each version will be given a distinguishing version + number. + 10.2. Effect of New Versions + You may distribute the Covered Software under the terms of the version of the + License under which You originally received the Covered Software, or under the + terms of any subsequent version published by the license steward. + 10.3. Modified Versions + If you create software not governed by this License, and you want to create a + new license for such software, you may create and use a modified version of + this License if you rename the license and remove any references to the name of + the license steward (except to note that such modified license differs from + this License). + 10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the notice + described in Exhibit B of this License must be attached. +Exhibit A - Source Code Form License Notice +------------------------------------------- + This Source Code Form is subject to the terms of the Mozilla Public License, + v. 2.0. If a copy of the MPL was not distributed with this file, You can + obtain one at http://mozilla.org/MPL/2.0/. +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. +You may add additional accurate notices of copyright ownership. +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + This Source Code Form is "Incompatible With Secondary Licenses", as defined + by the Mozilla Public License, v. 2.0. +--- +The Open SSL License +(briansmith/ring 0.17.8) +OpenSSL +======= +Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. +----------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + 3. All advertising materials mentioning features or use of this software must + display the following acknowledgment: This product includes software + developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org) + 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + endorse or promote products derived from this software without prior written + permission. For written permission, please contact openssl-core@openssl.org + 5. Products derived from this software may not be called "OpenSSL" nor may + "OpenSSL" appear in their names without prior written permission of the + OpenSSL Project. + 6. Redistributions of any form whatsoever must retain the following + acknowledgment: "This product includes software developed by the OpenSSL + Project for use in the OpenSSL Toolkit (http://www.openssl.org)" +THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. This product includes cryptographic software +written by Eric Young (eay@cryptsoft.com). This product includes software written +by Tim Hudson (tjh@cryptsoft.com). +--- +The Unlicense +(BurntSushi/byteorder 1.5.0, BurntSushi/rust-memchr 2.7.4, BurntSushi/same-file 1.0.6, BurntSushi/walkdir 2.5.0, byteorder-lite 0.1.0, rust-aho-corasick 1.1.3, winapi-util 0.1.9) +The Unlicense +============= +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to the +detriment of our heirs and successors. We intend this dedication to be an overt +act of relinquishment in perpetuity of all present and future rights to this +software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +For more information, please refer to http://unlicense.org/ +--- +Unicode License Agreement - Data Files and Software (2016) +(unicode-ident 1.0.13, unicode-org/icu4x 0.1.4) +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +========================================================= +Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. +Unicode Data Files do not include PDF online code charts under the directory +http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under the +directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), +AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, +ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT +DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. +COPYRIGHT AND PERMISSION NOTICE +Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the +Terms of Use in http://www.unicode.org/copyright.html. +Permission is hereby granted, free of charge, to any person obtaining a copy of +the Unicode data files and any associated documentation (the "Data Files") or +Unicode software and any associated documentation (the "Software") to deal in the +Data Files or Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files or +Software are furnished to do so, provided that either + a. this copyright and permission notice appear with all copies of the Data + Files or Software, or + b. this copyright and permission notice appear in associated Documentation. +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be +used in advertising or otherwise to promote the sale, use or other dealings in +these Data Files or Software without prior written authorization of the copyright +holder. +--- +Unicode License v3 +(unicode-org/icu4x 1.5.1, unicode-org/icu4x, yoke 0.7.4, yoke-derive 0.7.4, zerovec-derive 0.10.3) +UNICODE LICENSE V3 +================== +COPYRIGHT AND PERMISSION NOTICE +Copyright © 1991-2023 Unicode, Inc. +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, +INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR SOFTWARE, YOU +UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS +OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, +DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy of +data files and any associated documentation (the "Data Files") or software and +any associated documentation (the "Software") to deal in the Data Files or +Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or +Software, and to permit persons to whom the Data Files or Software are furnished +to do so, provided that either (a) this copyright and permission notice appear +with all copies of the Data Files or Software, or (b) this copyright and +permission notice appear in associated Documentation. +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. +Except as contained in this notice, the name of a copyright holder shall not be +used in advertising or otherwise to promote the sale, use or other dealings in +these Data Files or Software without prior written authorization of the copyright +holder. +--- +University of Illinois/NCSA Open Source License +(libfuzzer-sys 0.4.7) +University of Illinois/NCSA Open Source License +=============================================== +Copyright (c) All rights reserved. +Developed by: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimers. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the documentation + and/or other materials provided with the distribution. + * Neither the names of , nor + the names of its contributors may be used to endorse or promote products + derived from this Software without specific prior written permission. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. +--- +zlib License +(bytemuck 1.19.0, bytemuck_derive 1.8.0, foldhash 0.1.3, miniz_oxide 0.8.0, tinyvec 1.8.0, tinyvec_macros 0.1.1, zune-core 0.4.12, zune-inflate 0.2.54, zune-jpeg 0.4.13) +The zlib/libpng License +======================= +Copyright (c) +This software is provided 'as-is', without any express or implied warranty. In no +event will the authors be held liable for any damages arising from the use of +this software. +Permission is granted to anyone to use this software for any purpose, including +commercial applications, and to alter it and redistribute it freely, subject to +the following restrictions: + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +--- +``` \ No newline at end of file diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/limitations.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/limitations.mdx new file mode 100644 index 00000000000..0972d76b493 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/limitations.mdx @@ -0,0 +1,27 @@ +--- +title: Limitations +navTitle: Limitations +description: Limitations of the EDB Postgres AI - AI Accelerator Pipelines. +--- + +### Observability + +* Observability is currently limited to the logs and metrics provided by the underlying components. There is no single pane of glass for monitoring the entire system. + +* Monitoring progress of initial embedding is also not currently available. We recommend using the system logs to track progress. + +### Large documents + +* The current implementation of Pipelines does not handle the chunking of large documents. + +### Data Filtering + +* While Pipelines can use SQL filters and views based on the content of rows to limit embedded documents, the system does not currently support the ability to similarly filter on data in S3 storage. It is limited to using sub-paths and prefix filtering. + +### Load Balancing for Models + +* There is currently no load balancing mechanism for model access. + +### Data Formats + +* Pipelines currently only supports Text and Image formats. Other formats, including structured data, video, and audio, are not currently supported. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/index.mdx new file mode 100644 index 00000000000..9603f222942 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/index.mdx @@ -0,0 +1,19 @@ +--- +title: "Pipelines - Models" +navTitle: "Models" +description: "How to work with models in AI Accelerator Pipelines." +navigation: +- using-models +- primitives +- supported-models +--- + +Pipelines has a model registry that manages configured instances of models. Any Pipelines functions that use models, such as embedding and retrieving, must reference a registered model. + +* Learn how to [register models](./using-models) in Pipelines. +* Discover the [primitives](./primitives) that can be used to interact with models. +* See the [supported models](./supported-models) that come with Pipelines. + +## Next Steps + +Once you are familiar with Models, move on to learn how to use those models with [Retrievers](../retrievers). diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/primitives.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/primitives.mdx new file mode 100644 index 00000000000..4c90ab98cae --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/primitives.mdx @@ -0,0 +1,67 @@ +--- +title: "Pipelines - Model Primitives" +navTitle: "Primitives" +description: "The model primitives available in EDB Postgres AIs AI Accelerator Pipelines." +--- + +For most use cases, we recommend you use the aidb [retrievers](../retrievers) to interact with models. They can manage creating embeddings and retrieving matching data for many applications. + +However, if you need to interact with models directly, you can use the following primitives. The encode functions generate embeddings for text and images, and the decode functions generate text from embeddings. + +## Generate Text Embeddings + +Call `aidb.encode_text` to generate a vector representation of a given text input. + +```sql +select aidb.encode_text('t5', 'This is text I need vectorized.'); +``` + +For batch inferencing, call `aidb.encode_text_batch`: + +```sql +select aidb.encode_text_batch('my_bert_model', ARRAY[ + 'Dwayne "The Rock" Johnson', + 'Hatsune Miku', + 'Jim Lehrer', + 'Dikembe Mutombo' +]) +``` + +## Generate Image Embeddings + +Call `aidb.encode_image` to generate a vector representation of a given image input. + +```sql +-- BYTEA type casting included to demonstrate what data type is used +select aidb.encode_image('clip', image1 AS BYTEA); +``` + +For batch inferencing, call `aidb.encode_image_batch`: + + +```sql +-- BYTEA type casting included to demonstrate what data type is used +select aidb.encode_image_batch('my_bert_model', ARRAY[ + image_of_the_rock_cooking AS BYTEA, + image_of_miku_singing AS BYTEA, + image_of_jim_reporting_news AS BYTEA, + image_mutombo_blocking_shots AS BYTEA +]) +``` + +## Generate Prompt Responses + +Call `aidb.decode_text` to generate a prompt response from a given text input. + +```sql +select aidb.decode_text('t5', 'translate to german: hello world'); +``` + +For batch inferencing, call `aidb.decode_text_batch`: + +```sql +select aidb.decode_text_batch('my_bert_model', ARRAY[ + 'translate to german: i am an example', + 'summarize: The missile knows where it is at all times. It knows this because it knows where it isn''t. By subtracting where it is from where it isn''t, or where it isn''t from where it is (whichever is greater), it obtains a difference, or deviation. The guidance subsystem uses deviations to generate corrective commands to drive the missile from a position where it is to a position where it isn''t, and arriving at a position where it wasn''t, it now is.' +]); +``` diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/bert.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/bert.mdx new file mode 100644 index 00000000000..f483e7f3a5d --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/bert.mdx @@ -0,0 +1,60 @@ +--- +title: "BERT" +navTitle: "BERT" +description: "BERT is a transformer-based model used for natural language processing tasks such as text classification, text generation, and text completion." +--- + +Model name: `bert_local` + +## About BERT + +BERT (Bidirectional Encoder Representations from Transformers) is a transformer-based model that is used for natural language processing tasks such as text classification, text generation, and text completion. It is pre-trained on a large corpus of text data and is capable of performing a wide range of natural language processing tasks. + +Read more about [BERT on Wikipedia](https://en.wikipedia.org/wiki/BERT_(language_model)) and at [HuggingFace's SentenceTransformers page](https://huggingface.co/sentence-transformers). + +## Supported aidb operations + +* encode_text +* encode_text_batch + +## Supported models + +* sentence-transformers/all-MiniLM-L6-v2 (default) +* sentence-transformers/all-MiniLM-L6-v1 +* sentence-transformers/all-MiniLM-L12-v1 +* sentence-transformers/msmarco-bert-base-dot-v5 +* sentence-transformers/multi-qa-MiniLM-L6-dot-v1 +* sentence-transformers/paraphrase-TinyBERT-L6-v2 +* sentence-transformers/all-distilroberta-v1 +* sentence-transformers/all-MiniLM-L6-v2 +* sentence-transformers/multi-qa-MiniLM-L6-cos-v1 +* sentence-transformers/paraphrase-multilingual-mpnet-base-v2 +* sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 + +## Register the default implementation + + +```sql +SELECT aidb.register_model('my_bert_model', 'bert_local'); +``` + +## Register another model + +```sql +select aidb.register_model( + 'another_bert_model', + 'bert_local', + '{"model": "sentence-transformers/all-distilroberta-v1", "revision": "main"}'::JSONB +) +``` + +## Model configuration settings + +The following configuration settings are available for CLIP models: + +* `model` - The BERT model to use. The default is `sentence-transformers/all-MiniLM-L6-v2`. +* `revision` - The revision of the model to use. The default is `refs/pr/64`. This entry is a reference to the model revision in the HuggingFace repository, and is used to specify the model version to use, in this case [this branch](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2/tree/refs%2Fpr%2F64). + +## Model credentials + +No credentials are required for the BERT models as they run locally. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/clip.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/clip.mdx new file mode 100644 index 00000000000..124e26e51fa --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/clip.mdx @@ -0,0 +1,50 @@ +--- +title: "CLIP" +navTitle: "CLIP" +description: "CLIP (Contrastive Language-Image Pre-training) is a model that learns visual concepts from natural language supervision." +--- + +Model name: `clip_local` + +## About CLIP + +CLIP (Contrastive Language-Image Pre-training) is a model that learns visual concepts from natural language supervision. It is a zero-shot learning model that can be used for a wide range of vision and language tasks. + +Read more about [CLIP on OpenAI's website](https://openai.com/research/clip/). + + +## Supported aidb operations + +* encode_text +* encode_text_batch +* encode_image +* encode_image_batch + +## Supported models + +* openai/clip-vit-base-patch32 (default) + +## Register the default implementation + +```sql +SELECT aidb.register_model('my_clip_model', 'clip_local'); +``` + +There is only one model, the default `openai/clip-vit-base-patch32`, so we do not need to specify the model in the configuration. No credentials are required for the CLIP model. + +## Register another model + +There are no other model configurations available for the CLIP model. + + +## Model configuration settings + +The following configuration settings are available for CLIP models: + +* `model` - The CLIP model to use. The default is `openai/clip-vit-base-patch32` and is the only model available. +* `revision` - The revision of the model to use. The default is `refs/pr/15`. This entry is a reference to the model revision in the HuggingFace repository, and is used to specify the model version to use, in this case [this branch](https://huggingface.co/openai/clip-vit-base-patch32/tree/refs%2Fpr%2F15). +* `image_size` - The size of the image to use. The default is `224`. + +## Model credentials + +No credentials are required for the CLIP model. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/index.mdx new file mode 100644 index 00000000000..6acad660881 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/index.mdx @@ -0,0 +1,20 @@ +--- +title: Pipelines - Supported Models +navTitle: Supported Models +description: "Supported models in EDB Postgres AI - AI Accelerator - Pipelines." +navigation: +- t5 +- openai-embeddings +- openai-completions +- bert +- clip +--- + +This section provides details of the supported models in EDB Postgres AI - AI Accelerator - Pipelines and their capabilities. + +* [T5](t5) +* [OpenAI Embeddings](openai-embeddings) +* [OpenAI Completions](openai-completions) +* [BERT](bert) +* [CLIP](clip) + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-completions.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-completions.mdx new file mode 100644 index 00000000000..b4172289534 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-completions.mdx @@ -0,0 +1,56 @@ +--- +title: "OpenAI Completions" +navTitle: "OpenAI Completions" +description: "OpenAI Completions is a text completion model that enables use of any OpenAI text generation model." +--- + +Model name: `openai_completions` + +## About OpenAI Completions + +OpenAI Completions is a text completion model that enables use of any supported OpenAI text generation model. It is suitable for chat/text transforms, text completion, and other text generation tasks. + +See a list of supported OpenAI models [here](https://platform.openai.com/docs/models#models-overview). + +## Supported aidb operations + +* decode_text +* decode_text_batch + +## Supported models + +* Any text generation model that is supported by OpenAI. This includes models such as GPT-4o, GPT-4o mini, GPT-4 and GPT-3.5. + +## Registering the default model + +There is no default model for OpenAI Completions. You can register any supported OpenAI model using the `aidb.register_model` function. See [Registering a model](#registering-a-model). + +## Registering a model + +You can register any supported OpenAI model using the `aidb.register_model` function. + +In this example, we are registering a GPT-4o model with the name `my_openai_model`: + +```sql +SELECT aidb.register_model( + 'my_openai_model', + 'openai_completions', + '{"model": "gpt-4o"}::JSONB, + '{"api_key": "sk-abc123xyz456def789ghi012jkl345mn"}'::JSONB +) +``` + +## Model configuration settings + +The following configuration settings are available for OpenAI models: + +* `model` - The OpenAI model to use. +* `url` - The URL of the OpenAI model to use. This is optional and can be used to specify a custom model URL. Defaults to `https://api.openai.com/v1/chat/completions`. +* `max_concurrent_requests` - The maximum number of concurrent requests to make to the OpenAI model. Defaults to `25`. + +## Model credentials + +The following credentials are required for OpenAI models: + +* `api_key` - The OpenAI API key to use for authentication. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-embeddings.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-embeddings.mdx new file mode 100644 index 00000000000..50a0369b8ef --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/openai-embeddings.mdx @@ -0,0 +1,62 @@ +--- +title: "OpenAI Embeddings" +navTitle: "OpenAI Embeddings" +description: "OpenAI Embeddings is a text embedding model that enables use of any OpenAI text embedding model." +--- + +Model name: `openai_embeddings` + +## About OpenAI Embeddings + +OpenAI Embeddings is a text embedding model that enables use of any supported OpenAI text embedding model. It is suitable for text classification, clustering, and other text embedding tasks. + +See a list of supported OpenAI models [here](https://platform.openai.com/docs/guides/embeddings#embedding-models). + +## Supported aidb operations + +* encode_text +* encode_text_batch + +## Supported models + +* Any text embedding model that is supported by OpenAI. This includes `text-embedding-3-small`, `text-embedding-3-large`, and `text-embedding-ada-002`. +* Defaults to `text-embedding-3-small`. + +## Registering the default model + +```sql +SELECT aidb.register_model('my_openai_embeddings', + 'openai_embeddings', + credentials=>'{"api_key": "sk-abc123xyz456def789ghi012jkl345mn"'::JSONB); +``` + +As we are defaulting the model to `text-embedding-3-small`, we do not need to specify the model in the configuration. But we do need to pass an OpenAI API key in the credentials, and for that we have to pass credentials as a named parameter. + +## Registering a model + +You can register any supported OpenAI embedding model using the `aidb.register_model` function. In this example, we are registering a `text-embedding-3-large` model with the name `my_openai_model`: + +```sql +SELECT aidb.register_model( + 'my_openai_model', + 'openai_embeddings', + '{"model": "text-embedding-3-large"}'::JSONB, + '{"api_key": "sk-abc123xyz456def789ghi012jkl345mn"}'::JSONB +); +``` + +Because we are passing the configuration options and the credentials, unlike the previous example, we do not need to pass the credentials as a named parameter. + +## Model configuration settings + +The following configuration settings are available for OpenAI models: + +* `model` - The OpenAI model to use. +* `url` - The URL of the OpenAI model to use. This is optional and can be used to specify a custom model URL. Defaults to `https://api.openai.com/v1/chat/completions`. +* `max_concurrent_requests` - The maximum number of concurrent requests to make to the OpenAI model. Defaults to `25`. + +## Model credentials + +The following credentials are required for OpenAI models: + +* `api_key` - The OpenAI API key to use for authentication. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/t5.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/t5.mdx new file mode 100644 index 00000000000..5c6bbf20900 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/supported-models/t5.mdx @@ -0,0 +1,60 @@ +--- +title: T5 +navTitle: T5 +description: "T5 is a text-to-text transformer model that converts input text into output text." +--- + +Model name: `t5_local` + +## About T5 + +T5 is a text-to-text transformer model that converts input text into output text. It is based on the Transformer architecture where encoder processes the input and a decoder then genrates the output. It is pre-trained on a large corpus of text data and is capable of performing a wide range of natural language processing tasks, such as chatbots, translation, summarization, and question answering. + +Read more about [T5 on Wikipedia](https://en.wikipedia.org/wiki/T5_(language_model)). + +## Supported aidb operations + +* encode_text +* decode_text +* encode_text_batch +* decode_text_batch + +## Supported models + +* t5-small (default) +* t5-base +* t5-large +* t5-3b +* t5-11b + +## Registering the default model + +```sql +SELECT aidb.register_model('my_t5_model', 't5_local'); +``` + +## Registering a specific model + +```sql +SELECT aidb.register_model( + 'another_t5_model', + 't5_local', + '{"model": "t5-large", "revision": "main"}'::JSONB +) +``` + +## Model configuration settings + +The following configuration settings are available for T5 models: + +* `model` - The T5 model to use. The default is `t5-small`. +* `revision` - The revision of the model to use. The default is `refs/pr/15`. **TODO** +* `temperature` - The temperature to use for sampling. The default is `0.0`. +* `seed` - The random seed to use for sampling. The default is `1599222198345926291`. +* `max_tokens` - The maximum number of tokens to generate. The default is `16384`. +* `repeat_penalty` - The repetition penalty to use. The default is `1.1`. +* `repeat_last_n` - The number of tokens to consider for the repetition penalty. The default is `64`. + +## Model credentials + +No credentials are required for the T5 model. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/models/using-models.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/using-models.mdx new file mode 100644 index 00000000000..188a0584147 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/models/using-models.mdx @@ -0,0 +1,89 @@ +--- +title: Using Models in AI Accelerator Pipelines +navTitle: Using Models +description: How to register and use models in AI Accelerator Pipelines. +--- + +Pipelines has a model registry that manages configured instances of models. Any Pipelines functions that use models, such as embedding and retrieving, must reference a registered model. + +## Discover the preloaded models + +Pipelines comes with a set of pre-registerd models that you can use out of the box. + +To find them, you can run the following query: + +```sql +SELECT * FROM aidb.list_registered_models(); +``` + +This will return a list of all the models that are currently registered in the system. If you have not registered any models, you'll see the default models that come with Pipelines. + +```text + name | provider | options +-----------------------+-------------------+----------------------------------- + bert | bert_local | {"config={}"} + clip | clip_local | {"config={}"} + t5 | t5_local | {"config={}"} + dummy | dummy | {"config={}"} +``` + +The `bert`, `clip`, and `t5` models are all registered and ready to use. The `dummy` model is a placeholder model that can be used for testing purposes. + +## Registering a Model + +You can also register your own models. To do this, you can use the `aidb.register_model` function. Here is an example of how to register a model: + +```sql +SELECT aidb.register_model('my_model', 'bert_local'); +``` + +This will register a model named `my_model` that uses the default `bert_local` model provider. But, this is essentially the same as using the bert model thats already registered. + +## Registering a Model with a Configuration + +You can also pass options to the model when registering it. For example, you can specify the model configuration: + +```sql +SELECT aidb.register_model('my_model', + 'bert_local', + '{"model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2", "revision": "main"}'::JSONB); +``` + +This will register a model named `my_model` that uses the `bert_local` model provider and the `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` model from HuggingFace. The `revision` option specifies the version of the model to use. The options are passed as a JSONB object, with a single quoted string that is then cast to JSONB. Within the string are the key-value pairs that define the model configuration in a single JSON object. + +## Registering a Model with Configuration and Credentials + +This is where the other [supported models](./supported-models) come in. You can register a different model by specifying the model name in the configuration. The `OpenAI Completions` and `OpenAI Embeddings` models are both models which you can register to make use of OpenAI's completions and embeddings APIs. + +You need to provide more information to the `aidb.register_model` function when registering a model like these. Completions has a number of options, including selecting which model it will use on OpenAI. Both Completions and Embeddings requires API credentials. Here is an example of how to register the OpenAI Completions model: + +```sql +SELECT aidb.register_model( + 'my_openai_model', + 'openai_completions', + '{"model": "gpt-4o"}'::JSONB, + '{"api_key": "sk-abc123xyz456def789ghi012jkl345mn"}'::JSONB + }; +``` + +You should replace the `api_key` value with your own OpenAI API key. Now you can use the `my_openai_model` model in your Pipelines functions and, in this example, leverage the GPT-4o model from OpenAI. + +You can also register the OpenAI Embeddings model in a similar way. + +```sql +SELECT aidb.register_model( + 'my_openai_embeddings', + 'openai_embeddings', + '{"model": "text-embedding-3-large"}'::JSONB, + '{"api_key": "sk-abc123xyz456def789ghi012jkl345mn"}'::JSONB + }; +``` + +This will register the `text-embedding-3-large` model with the name `my_openai_embeddings`. You can now use this model in your Pipelines functions to generate embeddings for text data. + +## Using models with OpenAI compatible APIs + +These OpenAI models work with any OpenAI compatible API. This allows you to connect and use an even wider range of models, just by passing the appropriate API endpoint to the `url` option in the `aidb.register_model` function's options. + +For more information about the OpenAI models, see the [OpenAI Completions](./supported-models/openai-completions) and [OpenAI Embeddings](./supported-models/openai-embeddings) pages. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/overview.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/overview.mdx new file mode 100644 index 00000000000..5ace25ccdc7 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/overview.mdx @@ -0,0 +1,36 @@ +--- +title: "EDB Postgres AI - AI Accelerator - Overview" +navTitle: "Overview" +description: "Overview of the EDB Postgres AI AI Accelerator suite of tools including EDB PGvector and Pipelines." +--- + +## What is the AI Accelerator? + +AI Accelerator simplifies AI data management by combining vector search from open source PGvector with Pipelines, an extension for AI data pipeline automation. It handles vector embedding operations for structured and unstructured data, simplifying similarity searches and natural language querying, and streamlines development of AI-powered applications by providing retrieval of AI-ready data in a familiar Postgres environment. + +## Features + +### Vector Toolkit + +The EDB Pipelines extension enables automated vector embedding, storage, and retrieval workflows, and it comes preloaded with PGvector for seamless management of vector data in Postgres. This enables developers to build complex GenAI functionality using SQL commands in the familiar Postgres environment — with just 5 lines of code instead of 130+. + +### Swappable Configurations + +Easily switch between models, integrate multiple data modalities, and select from a variety of storage locations — in the cloud or on prem — enabling tailored performance and efficient data management that adapts to any need across your business. + +### Automated Pipelines + +Simplify data processing with Automated Pipelines for fetching data from Postgres or object storage, generating vector embeddings as new data is ingested, and triggering updates to embeddings when source data changes — meaning always-up-to-date data for query and retrieval without tedious maintenance. + +### GenAI Query Engine + +Leverage semantic search across text and images that’s 4.22X faster[^1] than purpose-built vector databases and an Intelligent Retriever that abstracts away the complexities of vector similarity calculations — transforming your Postgres database into a powerful GenAI search engine across multiple storage locations. + +[^1]: [Why we replaced Pinecone with PGVector](https://www.confident-ai.com/blog/why-we-replaced-pinecone-with-pgvector) Confident AI blog post. + +## Use cases + +* **Sovereign AI**: Your controlled, adaptable AI Platform. Secure, flexible, and cost-effective where your data lives. +* **Virtual Expert**: Natural language AI agents (e.g. chatbots, copilots) to improve workforce and customer outcomes. +* **Cognitive AI**: Intelligent search, analysis, and recommendation across diverse data types. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/index.mdx new file mode 100644 index 00000000000..5bd6e3483df --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/index.mdx @@ -0,0 +1,22 @@ +--- +title: "Pipelines - PGFS" +navTitle: "PGFS" +description: "How to work with the PGFS (Postgres File System) in Pipelines." +--- + +Pipelines has a "Postgres File System" (PGFS) extension that allows you to access external storage. In particular, it allows you to store and retrieve files from either a public or private S3-compatible bucket or a local file system. + +PGFS is a key component of Pipelines, allowing you to work with data which is not stored in the database, either because it is too large or because it is not structured in a way that is suitable for a relational database. + +PGFS is implemented as a foreign data wrapper (FDW) and is installed as an extension. The extension provides a set of functions to interact with the file system from within the database. + +## Installing the PGFS extension + +See [Installing](../installing) for instructions on how to install the PGFS extension as part of the Pipelines installation. + +## Using PGFS + +Depending on where the data is stored, you will need to create a server object to connect to the storage location. The server object is created using the `CREATE SERVER` command. + +- [S3-compatible storage](s3) +- [Local file system](local) diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/local.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/local.mdx new file mode 100644 index 00000000000..bf7bc937191 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/local.mdx @@ -0,0 +1,7 @@ +--- +title: "Pipelines PGFS with local file storage" +navTitle: "local file storage" +description: "How to use Pipelines PGFS with local file storage." +--- + +TODO diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/s3.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/s3.mdx new file mode 100644 index 00000000000..468bf176ffc --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgfs/s3.mdx @@ -0,0 +1,7 @@ +--- +title: "Pipelines PGFS with S3-compatible storage" +navTitle: "S3 storage" +description: "How to work with the PGFS in Pipelines with S3-compatible storage." +--- + +TODO diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/pgvector/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgvector/index.mdx new file mode 100644 index 00000000000..34a36ee9421 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/pgvector/index.mdx @@ -0,0 +1,38 @@ +--- +title: "AI Accelerator - PGvector" +navTitle: "PGvector" +description: "PGvector is a Postgres extension that provides vector data types and functions to store and manipulate vector data." +deepToC: true +--- + +## What is PGvector + +PGvector is an extension for Postgres that enables efficient storage and similarity search of high-dimensional vector data, commonly used for machine learning models, recommendation systems, and natural language processing applications. + +### Part of the EDB Postgres AI platform + +EDB Postgres AI with PGvector delivers a flexible solution for enterprise AI, integrating seamlessly with existing Postgres environments. It outperforms standalone vector databases with 4.22X faster queries and eliminates data silos via integrations with 18X cost-efficient object storage. This unified platform accelerates AI deployment, simplifies management, and ensures up to 99.999% availability, enabling businesses to innovate rapidly and future-proof their data infrastructure without disrupting current operations. + +### Native Vector Data Type Support + +PGvector on EDB Postgres AI enables storage of AI/ML model embeddings as first-class data types, allowing efficient indexing and querying of large volumes of AI data stored in object storage, seamlessly integrated with traditional relational data. + +### Advanced 4.22X Vector Query + +Extends standard SQL with vector-specific operators and functions, enabling complex queries that combine vector operations, relational data, and full SQL capabilities, going far beyond simple similarity searches to support sophisticated AI-driven applications. + +### High-performance Indexing + +With real-time indexing, storage, and querying of AI data, PGvector enables efficient vector similarity search on embeddings from various LLMs, while leveraging Postgres transactionality for consistent handling of mixed workloads. + +### Integrated Vector Data Platform + +PGvector unifies vector database capabilities with EDB Postgres AI's mature enterprise features, ensuring high availability, robust backup/recovery, strong security, and ACID data integrity, all within a single vendor solution for comprehensive data management and AI workloads. + +## Installation + +The extension is included with AI Accelerator's Pipelines and installed automatically when Pipelines is installed. + +## Further information + +For more information on the PGvector extension, see the [PGvector repository](https://github.com/pgvector/pgvector). diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/pipelines-overview.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/pipelines-overview.mdx new file mode 100644 index 00000000000..2bae0b35148 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/pipelines-overview.mdx @@ -0,0 +1,44 @@ +--- +title: "AI Accelerator - Pipelines overview" +navTitle: "Pipelines Overview" +description: "Where to start with AI Accelerator Pipelines." +prevNext: True +--- + +As part of the EDB Postgres AI's AI Accelerator Pipelines abstracts away the complexity of working with AI data. It transforms Postgres into a powerful platform for AI data management, as it combines vector search from PGvector with automation for complex AI workflows. + +## Pipelines, Auto Embedding, and Intelligent Retriever + +Pipelines handles the entire lifecycle of embedding generation, storage, and indexing — so you can simply select your desired model from our list of supported models, or connect to any OpenAI API compatible external model, and let Pipelines manage everything else from data ingestion to efficient similarity search. + +With Auto Embedding, Pipelines automates embedding creation and updates, ensuring that vector stores remain up to date without manual embedding management — reducing the risk of stale data causing GenAI errors and hallucinations. + +The Intelligent Retriever feature makes it possible to perform similarity and semantic searches across text and image data, whether stored in Postgres or object storage — all with a single retriever function call. + +## How Pipelines works + +Pipelines delivers its functionality through the Pipelines aidb extension, embedded into the Postgres server. The extension provides a set of functions and views that allow you to interact with the AI data in your Postgres database. + +### Retrievers + +Pipelines' aidb extension introduces the concept of a “retriever” that you can create for a given type and location of AI data. Currently, Pipelines supports unstructured plain text documents as well as a set of image formats. This data can either reside in regular columns of a Postgres table or it can reside in an S3-compatible object storage bucket. + +A retriever encapsulates all processing that is needed to make the AI data in the provided source location searchable and retrievable through similarity. The application just needs to create a retriever via the `aidb.register_retriever_for_table()` function for Postgres tables or `aidb.register_retriever_for_volume` for externally stored data on S3 or local filesystems. + +### Auto embedding + +Auto embedding is currently supported for AI data stored in Postgres tables and it automates the embedding updates using Postgres triggers. `aidb.enable_auto_embedding_for_table()` enables auto embedding for a given retriever and `aidb.disable_auto_embedding_for_table()` disables it. + +By default, auto embedding is disabled and the application has to manually trigger embedding generation for all existing data in the source location using `aidb.bulk_embedding()`. + +You can make best use of the two options by bulk loading your exisiting data into your table with auto embedding disabled. Then you can run `aidb.bulk_embedding()` to create embeddings for that data. Following that you can enable auto embedding to create embeddings for any future data added to the table. + +All embedding generation, storage, indexing, and management is handled by Pipelines' aidb extension internally. The application just has to specify the encoder LLM that the retriever should be using for the specific data and use case. + +### Intelligent retriever + +Once a retriever is created and all embeddings are up to date, the application can just use `aidb.retrieve_key()` to run a similarity search and retrieval by providing a query input. It will return the id of the matched items. When the retriever is created for text data, the query input is also a text term. For image retrievers the query input is an image. If you are using a multi-modal model, such as CLIP, with your retriever, you can use text or images as source and query inputs. This allows you to search for images using text or vice versa. + +The aidb retriever makes sure to use the same encoder LLM for the query input, conducts a similarity search and finally returns the ranked list of similar data from the source location. For Postgres tables, you can also use `aidb.retrieve_text()` to retrieve the actual data from the source table. + +Pipelines currently supports a broad list of open encoder LLMs from HuggingFace as well as a set of OpenAI encoders. HuggingFace LLMs are run locally on the Postgres node, while OpenAI encoders involve a call out to the OpenAI cloud service. You can view the list of currently supported model providers by viewing the `aidb.model_providers` table. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/index.mdx new file mode 100644 index 00000000000..508a83ff9d8 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/index.mdx @@ -0,0 +1,53 @@ +--- +title: "Pipelines reference" +navTitle: "Reference" +description: "Reference documentation for AI Accelerator - Pipelines." +deepToC: true +indexCards: none +navigation: +- models +- retrievers +- pgfs +--- + +## Models + +### Tables + +* [aidb.model_providers](models#aidbmodel_providers) + +### Functions +* [aidb.register_model](models#aidbregister_model) +* [aidb.list_registered_models](models#aidblist_registered_models) +* [aidb.get_registered_model](models#aidbget_registered_model) +* [aidb.delete_registered_model](models#aidbdelete_registered_model) + +## Retrievers + +### Tables + +* [aidb.retrievers](retrievers#aidbretrievers) + +### Functions + +* [aidb.register_retriever_for_table](retrievers#aidbregister_retriever_for_table) +* [aidb.register_retriever_for_volume](retrievers#aidbregister_retriever_for_volume) +* [aidb.enable_auto_embedding_for_table](retrievers#aidbenable_auto_embedding_for_table) +* [aidb.disable_auto_embedding_for_table](retrievers#aidbdisable_auto_embedding_for_table) +* [aidb.bulk_embedding](retrievers#aidbbulk_embedding) +* [aidb.retrieve_key](retrievers#aidbretrieve_key) +* [aidb.retrieve_text](retrievers#aidbretrieve_text) +* [aidb.delete_retriever](retrievers#aidbdelete_retriever) + +## pgfs + +### Functions + +* [pgfs.create_foreign_table](pgfs#pgfscreate_foreign_table) +* [pgfs.create_storage_location](pgfs#pgfscreate_storage_location) +* [pgfs.create_storage_location_with_foreign_table](pgfs#pgfscreate_storage_location_with_foreign_table) +* [pgfs.delete_storage_location](pgfs#pgfsdelete_storage_location) +* [pgfs.list_storage_locations](pgfs#pgfslist_storage_locations) +* [pgfs.get_storage_location](pgfs#pgfsget_storage_location) +* [pgfs.update_storage_location](pgfs#pgfsupdate_storage_location) + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/models.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/models.mdx new file mode 100644 index 00000000000..b3211983ab6 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/models.mdx @@ -0,0 +1,212 @@ +--- +title: "Pipelines reference - Models" +navTitle: "Models" +description: "Reference documentation for EDB Postgres AI - AI Accelerator - Pipelines Models." +deepToC: true +--- + +This section provides reference documentation for EDB Postgres AI AI Accelerator Pipelines Models. It includes information on the functions and views available in the aidb extension for working with [Models](../models/). + +## Tables + +### `aidb.model_providers` + +The `aidb.model_providers` table stores information about the model providers that have been created in the database. + +| Column | Type | Description | +|----------------|----------|-------------------------------| +| server_name | name | Name for the model server. | +| server_options | text\[\] | Options for the model server. | + + +## Functions + +### `aidb.register_model` + +Registers a a new model in the system by saving its name, provider and optional configuration. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------|-------|-------------|----------------------------------------------------------------------------------------| +| `name` | text | | User defined name for the model. | +| `provider` | text | | Name of the model provider (as found in [aidb.model_providers](#aidbmodel_providers)). | +| `config` | jsonb | '{}'::jsonb | Optional configuration for the model provider. | +| `credentials` | jsonb | '{}'::jsonb | Optional credentials for the model provider. | + + +#### Example + +```sql +SELECT aidb.register_model( + name => 'my_t5'::text, + provider => 't5_local'::character varying, + config => '{"param1": "value1", "param2": "value2"}'::jsonb, + credentials => '{"token": "abcd"}'::jsonb + ); +``` + +or equivalently, using default values: + +```sql +SELECT aidb.register_model('my_t5', 't5_local'); +``` + +### `aidb.list_registered_models` + +Returns a list of all registered models and their configured options. + +#### Parameters + +None + +#### Returns + +| Column | Type | Description | +|------------|-------|------------------------------------------------| +| `name` | text | User defined name for the model. | +| `provider` | text | Name of the model provider. | +| `options` | jsonb | Optional configuration for the model provider. | + +#### Example + +```sql +SELECT * FROM aidb.list_registered_models(); +__OUTPUT__ + name | provider | options +-------+------------+--------------- + bert | bert_local | {"config={}"} + clip | clip_local | {"config={}"} + t5 | t5_local | {"config={}"} +``` + +### `aidb.get_registered_model` + +Returns the configuration for a registered model. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|--------------------| +| `model_name` | text | | Name of the model. | + +#### Returns + +| Column | Type | Description | +|------------|-------|------------------------------------------------| +| `name` | text | User defined name for the model. | +| `provider` | text | Name of the model provider. | +| `options` | jsonb | Optional configuration for the model provider. | + +#### Example + +```sql +SELECT * FROM aidb.get_registered_model('t5'); +__OUTPUT__ + name | provider | options +------+----------+--------------- + t5 | t5_local | {"config={}"} +(1 row) +``` + +### `aidb.delete_registered_model` + +Deletes a registered model. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|--------------------| +| `model_name` | text | | Name of the model. | + +#### Example + +```sql +SELECT aidb.delete_registered_model('t5'); +__OUTPUT__ + delete_registered_model +--------------------------------- + (t5,t5_local,"{""config={}""}") +(1 row) +``` + +#### Returns + +| Column | Type | Description | +|---------------------------|-------|----------------------------------------------------------| +| `delete_registered_model` | jsonb | The name, provider and options of the now deleted model. | + +### `aidb.encode_text` + +Encodes text using a registered model, generating a vector representation of a given text input. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|-----------------------------------| +| `model_name` | text | | Name of the model to encode with. | +| `text` | text | | Text to encode. | + +### `aidb.encode_text_batch` + +Encodes a batch of text using a registered model, generating a vector representation of a given text inputs. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|----------|---------|-----------------------------------| +| `model_name` | text | | Name of the model to encode with. | +| `text` | text\[\] | | Array of text to encode. | + + +### `aidb.decode_text` + +Decodes text using a registered model, generating a vector representation of a given text input. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|-----------------------------------| +| `model_name` | text | | Name of the model to decode with. | +| `text` | text | | Text to decode. | + +#### Returns + +| Column | Type | Description | +|--------------|------|-------------------| +| `decode_text` | text | The decoded text. | + +### `aidb.decode_text_batch` + +Decodes a batch of text using a registered model, generating a representation of a given text input. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|-----------------------------------| +| `model_name` | text | | Name of the model to decode with. | +| `text` | text\[\] | | Array of text to decode. | + +#### Returns + +| Column | Type | Description | +|--------------|------|-------------------| +| `decode_text` | text | The decoded text. | + +### `aidb.encode_image` + +Encodes an image using a registered model, generating a vector representation of a given image input. + +#### Parameters + +| Parameter | Type | Default | Description | +|--------------|------|---------|-----------------------------------| +| `model_name` | text | | Name of the model to encode with. | +| `image` | bytea | | Image to encode. | + +#### Returns + +| Column | Type | Description | +|--------------|------|-------------------| +| `encode_image` | bytea | The encoded image. | + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/pgfs.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/pgfs.mdx new file mode 100644 index 00000000000..20716801311 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/pgfs.mdx @@ -0,0 +1,190 @@ +--- +title: "Pipelines reference - PGFS" +navTitle: "PGFS" +description: "Reference documentation for EDB Postgres AI - AI Accelerator - Pipelines PGFS." +deepToC: true +--- + +This section provides reference documentation for EDB Postgres AI - AI Accelerator Pipelines PGFS. It includes information on the functions and views available in the [pgfs](../pgfs) extension that gives aidb access to S3-compatible file systems and local file systems. + +## Functions + +### `pgfs.create_foreign_table` + +Creates a foreign table in the database. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------|------|---------|-------------| +| `table_name` | text | | | +| `server_name` | text | | | + +#### Example + +```sql +SELECT pgfs.create_foreign_table('my_table', 'my_server'); +``` + +### `pgfs.create_storage_location` + +Creates a storage location in the database. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------|------|---------|-------------| +| `name` | text | | Name for storage location | +| `url` | text | | URL for this storage location (prefix `s3:` or `file:`) | +| `msl_id` | uuid | | Unused | +| `options` | json | | | +| `credentials` | json | | | + +#### Example + +```sql +SELECT pgfs.create_storage_location('my_storage', 's3://my_bucket', '123e4567-e89b-12d3-a456-426614174000', '{}', '{}'); +``` + +### `pgfs.create_storage_location_with_foreign_table` + +Creates a storage location in the database and associates it with a foreign table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------|------|---------|-------------| +| `storage_location_name` | text | | | +| `url` | text | | | +| `msl_id` | uuid | | | +| `options` | json | | | +| `credentials` | json | | | + +#### Example + +```sql +SELECT pgfs.create_storage_location_with_foreign_table('my_storage', 's3://my_bucket', '123e4567-e89b-12d3-a456-426614174000', '{}', '{}'); +``` + +### `pgfs.delete_storage_location` + +Deletes a storage location from the database. + +#### Parameters + +| Parameter | Type | Default | Description | +|-------------------------|------|---------|-------------| +| `storage_location_name` | text | | | + +#### Example + +```sql +SELECT pgfs.delete_storage_location('my_storage'); +``` + +### `pgfs.get_default_storage_location` + +Returns the default storage location. + +#### Returns + +| Column | Type | Description | +|--------------------------|------|-------------| +| `default_storage_location` | text | | + +#### Example + +```sql +SELECT * FROM pgfs.get_default_storage_location(); +``` + +### `pgfs.get_storage_location` + +Returns information about a storage location. + +#### Parameters + +| Parameter | Type | Default | Description | +|-------------------------|------|---------|-------------| +| `storage_location_name` | text | | | + +#### Returns + +| Column | Type | Description | +|--------------------------|------|-------------| +| `name` | text | | +| `url` | text | | +| `msl_id` | uuid | | +| `options` | json | | +| `credentials` | json | | + +#### Example + +```sql +SELECT * FROM pgfs.get_storage_location('my_storage'); +``` + +### `pgfs.list_storage_locations` + +Lists all storage locations in the database. + +#### Returns + +| Column | Type | Description | +|--------------------------|------|-------------| +| `name` | text | | +| `url` | text | | +| `msl_id` | uuid | | +| `options` | json | | +| `credentials` | json | | + +#### Example + +```sql +SELECT * FROM pgfs.list_storage_locations(); +``` + +### `pgfs.set_default_storage_location` + +Sets the default storage location. + +#### Parameters + +| Parameter | Type | Default | Description | +|-------------------------|------|---------|-------------| +| `storage_location_name` | text | | | + +#### Example + +```sql +SELECT pgfs.set_default_storage_location('my_storage'); +``` + +### `pgfs.update_storage_location` + +Updates a storage location in the database. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------|------|---------|-------------| +| `name` | text | | | +| `url` | text | | | +| `msl_id` | uuid | | | +| `options` | json | | | +| `credentials` | json | | | + +#### Example + +```sql +SELECT pgfs.update_storage_location('my_storage', 's3://my_bucket', '123e4567-e89b-12d3-a456-426614174000', '{}', '{}'); +``` + +## Views + +There are no user-facing views in the `pgfs` schema. + +## Tables + +There are no user-facing tables in the `pgfs` schema. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/retrievers.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/retrievers.mdx new file mode 100644 index 00000000000..e4de2a76560 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/reference/retrievers.mdx @@ -0,0 +1,274 @@ +--- +title: "Pipelines reference - Retrievers" +navTitle: "Retrievers" +description: "Reference documentation for EDB Postgres AI - AI Accelerator - Pipelines Retrievers." +deepToC: true +--- + +This section provides reference documentation for Pipelines Retrievers. It includes information on the functions and views available in the aidb extension related to [Retrievers](../retrievers/). + +## Views + +### `aidb.retrievers` + +The `aidb.retrievers` view shows information about the retrievers that have been created in the database. + +| Column | Type | Description | +|-------------------------------|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| id | integer | | +| name | text | Name of the retriever. | +| vector_table_name | text | Name of the table where the embeddings are stored. Gets newly created if it doesn’t exist, managed by aidb. | +| vector_table_key_column | text | The column that be used to store the key that references the key in source data when computing embeddings. Recommend to use the default and let aidb manage this table. | +| vector_table_vector_column | text | The column to store embeddings in. Recommend to use the default and let aidb manage this table. | +| model_name | text | Name of the registered model to use for embedding computation and retrievals. | +| topk | integer | How many results should be returned during a retrieve by default. Similar to LIMIT in SQL. | +| distance_operator | [aidb.DistanceOperator](#aidbdistanceoperator) | During retrieval, what vector operation should be used to compare the vectors. | +| options | jsonb | Currently unused. | +| source_type | text | Type of source data the retriever is working with. Can be either 'Table' or 'Volume'. | +| source_table_name | regclass | name of the table that has the source data we compute embeddings for, and that we retrieve from. Only applicable to retrievers configured with aidb.register_retriever_for_volume(). | +| source_table_data_column | text | column name in the source table that we compute embeddings for. This is also the column that will be returned in retrieve operations. | +| source_table_data_column_type | [aidb.RetrieverSourceDataFormat](#aidbretrieversourcedataformat) | Type of data the retriever working with. Uses type [`aidb.RetrieverSourceDataFormat`](#aidbretrieversourcedataformat). Only relevant for table based retrievers. In the case of a volume based retriever, the format/type information is discovered from the volume. | +| source_table_key_column | text | column to use as key for storing the embedding in the vector table. This provides a reference from the embedding to the source data | +| source_volume_name | text | Name of the volume to use as a data source. Only applicable to retrievers configured with aidb.register_retriever_for_volume(). | + +## Types + +### `aidb.DistanceOperator` + +The `aidb.DistanceOperator` type is an enum that represents the distance operators that can be used during retrieval. + +| Value | Description | +|---------|---------------------| +| L2 | Euclidean distance. | +| Inner | Inner product. | +| Cosine | Cosine similarity. | +| L1 | L1 distance. | +| Hamming | Hamming distance. | +| Jaccard | Jaccard distance. | + +SQL definition: + +```sql +CREATE TYPE DistanceOperator AS ENUM ( + 'L2', + 'InnerProduct', + 'Cosine', + 'L1', + 'Hamming', + 'Jaccard' +); +``` + +### `aidb.RetrieverSourceDataFormat` + +The `aidb.RetrieverSourceDataFormat` type is an enum that represents the data formats that can be used as source data. + +| Value | Description | +|-------|-------------| +| Text | Text data. | +| Image | Image data. | +| Pdf | PDF data. | + +SQL definition: + +```sql +CREATE TYPE RetrieverSourceDataFormat AS ENUM ( + 'Text', + 'Image', + 'Pdf' +); +``` + +## Functions + +### `aidb.register_retriever_for_table` + +Registers a retriever for a given table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|------------------------------------------------------------------|--------------|----------------------------------------------------| +| p_name | TEXT | Required | Name of the retriever | +| p_model_name | TEXT | Required | Name of the registedred model to use | +| p_source_table_name | regclass | Required | Name of the table to use as source | +| p_source_table_data_column | TEXT | Required | Column name in source table to use | +| p_source_table_data_column_type | [aidb.RetrieverSourceDataFormat](#aidbretrieversourcedataformat) | Required | Type of data in that column ("Text"."Image","PDF") | +| p_source_table_key_column | TEXT | 'id' | Column to use as key to reference the rows | +| p_vector_table_name | TEXT | NULL | | +| p_vector_table_vector_column | TEXT | 'embeddings' | | +| p_vector_table_key_column | TEXT | 'id' | | +| p_topk | INTEGER | 1 | | +| p_distance_operator | [aidb.distanceoperator](#aidbdistanceoperator) | 'L2' | | +| p_options | JSONB | '{}'::JSONB | Options | + +#### Example + +```sql +SELECT aidb.register_retriever_for_table( + p_name => 'test_retriever', + p_source_table_name => 'test_source_table', + p_source_table_data_column => 'content', + p_source_table_data_column_type => 'Text', + p_model_name => 'simple_model' + ); +``` + +### `aidb.register_retriever_for_volume` + +Registers a retriever for a given PGFS volume. + +#### Parameters + +| Parameter | Type | Default | Description | +|------------------------------|-----------------------|--------------|------------------------------| +| p_name | TEXT | Required | Name of the retriever. | +| p_source_volume_name | TEXT | Required | Name of the volume. | +| p_vector_table_name | TEXT | NULL | Name of the vector table. | +| p_vector_table_vector_column | TEXT | 'embeddings' | Name of the vector column. | +| p_vector_table_key_column | TEXT | 'id' | Name of the key column. | +| p_model_name | TEXT | NULL | Name of the model. | +| p_topk | INTEGER | 1 | Number of results to return. | +| p_distance_operator | aidb.distanceoperator | 'L2' | Distance operator. | +| p_options | JSONB | '{}'::JSONB | Options. | + +#### Example + +```sql +SELECT aidb.register_retriever_for_volume( + p_name => 'demo_vol_retriever', + p_model_name => 'simple_model', + p_source_volume_name => 'demo_bucket_vol' + ); +``` + +### `aidb.enable_auto_embedding_for_table` + +Enables automatic embedding generation for a given table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| p_name | TEXT | | Name of registered table which should have auto-embedding enabled.| + +#### Example + +```sql +SELECT aidb.enable_auto_embedding_for_table('test_retriever'); +``` + +### `aidb.disable_auto_embedding_for_table` + +Enables automatic embedding generation for a given table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| p_name | TEXT | | Name of registered table which should have auto_embedding disabled.| + +#### Example + +```sql +SELECT aidb.enable_auto_embedding_for_table('test_retriever'); +``` + +### `aidb.bulk_embedding` + +Generates embeddings for all data in a given table if there is existing data in the table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| retriever_name | TEXT | | Name of retriever which which should have embeddings generated.| + +#### Example + +``` +edb=# select aidb.bulk_embedding('test_retriever'); +__OUTPUT__ +INFO: bulk_embedding_text found 3 rows in retriever test_retriever + bulk_embedding +---------------- + +(1 row) +``` + +### `aidb.retrieve_key` + +Retrieves a key from matching embeddings without looking up the source data. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| retriever_name | TEXT | | Name of retriever which should be used for retrieval.| +| query_string | TEXT | | Query string to be used for retrieval.| +| number_of_results | INTEGER | 0 | Number of results to be returned.| + +#### Example + +```sql +SELECT * FROM aidb.retrieve_key('test_retriever', 'shoes', 2); +__OUTPUT__ + key | distance +-------+-------------------- + 43941 | 0.2938963414490189 + 19337 | 0.3023805122617119 +(2 rows) +``` + +### `aidb.retrieve_text` + +Retrieves the source text data from matching embeddings by joining the embeddings with the source table. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| retriever_name | TEXT | | Name of retriever which should be used for retrieval.| +| query_string | TEXT | | Query string to be used for retrieval.| +| number_of_results | INTEGER | 0 | Number of results to be returned.| + +#### Returns + +| Column | Type | Description | +|------------|------------------|------------------------------------------------| +| `key` | text | Key of the retrieved data. | +| `value` | text | Value of the retrieved data. | +| `distance` | double precision | Distance of the retrieved data from the query. | + +#### Example + +```sql +SELECT * FROM aidb.retrieve_text('test_retriever', 'jacket', 2); +__OUTPUT__ + key | value | distance +-------+----------------------------------------------------+-------------------- + 19337 | United Colors of Benetton Men Stripes Black Jacket | 0.2994317672742334 + 55018 | Lakme 3 in 1 Orchid Aqua Shine Lip Color | 0.3804609668507203 +(2 rows) + ``` + + ### `aidb.delete_retriever` + +Deletes only the retriever's configuration from the database. + +#### Parameters + +| Parameter | Type | Default | Description | +|---------------------------------|--------------------------------|--------------|-----------------------------------------------| +| retriever_name | TEXT | | Name of retriever which should be deleted.| + +#### Example + +```sql +select aidb.delete_retriever('test_retriever'); +__OUTPUT__ + delete_retriever +------------------ + +(1 row) +``` diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/ai-accelerator_1.0.0_rel_notes.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/ai-accelerator_1.0.0_rel_notes.mdx new file mode 100644 index 00000000000..b38db88b24b --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/ai-accelerator_1.0.0_rel_notes.mdx @@ -0,0 +1,59 @@ +--- +title: AI Accelerator - Pipelines 1.0.0 release notes +navTitle: Version 1.0.0 +--- + +Released: 20 November 2024 + +This is the GA release of EDB Postgres AI - AI Accelerator - Pipelines. Since the technical preview, a number of enhancements have been made. + +## Highlights + +- Integrated model runtime. +- Support for external models with OpenAI API. +- Secure management of API credentials via postgres "user mapping" feature. +- Model registry that allows configuring internal/external models. +- pgfs/volumes allows working with external data from S3 object stores and file systems. +- Low-level primitives for models: encode, transform for image and text data. +- Enhanced retriever concept for data retrieval. +- Support image and text data, including: Postgres tables, external storage, and ad-hoc queries. +- Support for building fully custom AI workflows/pipelines. + +## Enhancements + + + + + + + + + + + +
DescriptionAddresses
Integrated model runtime

The tech preview had a separate model runtime. Now, the model runtime is integrated into the product.

+
Support for external models with OpenAI API

The tech preview only supported internal models. Now, external models can be used with OpenAI API.

+
Secure management of API credentials via postgres "user mapping" feature

Improved from the tech preview which had no secure credential management.

+
Model registry that allows configuring internal/external models

A new concept in Pipelines over the tech preview which had only retrievers.

+
PGFS allows working with external data from S3 object stores and file systems

The tech preview could only work with S3 in retrievers. Now, the volume concept allows working with external data in general.

+
Low-level primitives for models: encode, transform for image and text data

Low-level primitives for modes have been added to complement the existing high-level functions.

+
Enhanced retriever concept for data retrieval

Retriever concept has been enhanced:

+
    +
  • Calls can now return rich table results with data such as vector distance.
  • +
  • Flexible interface allows "retrieving" just the key or the source data.
  • +
  • Enables integration with custom workflows/pipelines.
  • +
+
Support image and text data

Images can be retrieved from

+
    +
  • External storage or Postgres tables.
  • +
  • Images can also be retrieved from "bytea columns" in Postgres tables
  • +
  • Also able to be retrieved ad-hoc in a query.
  • +
+
Support for building fully custom AI workflows/pipelines
    +
  • direct SQL access to models (encode, transform, …) even allowing batch-execution
  • +
  • flexible interfaces in our high-level composite functions (like retrieve)
  • +
  • allowing direct access to all low-level interfaces that we use in high-level functions; such as exposing functions like "embed_single_row"
  • +
+
+ + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/index.mdx new file mode 100644 index 00000000000..5e57c453879 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/index.mdx @@ -0,0 +1,16 @@ +--- +title: EDB Postgres AI - AI Accelerator 1.0.0 release notes +navTitle: Release notes +description: Release notes for EDB Postgres AI - AI Accelerator 1.0.0 +indexCards: none +navigation: + - ai-accelerator_1.0.0_rel_notes +--- + + +The EDB Postgres AI - AI Accelerator describes the latest version of AI Accelerator. The release notes provide information on what was new in each release. For the GA 1.0.0 release, differences from the technical preview are highlighted. + + +| AI Accelerator version | Release Date | +|---|---| +| [1.0.0](./ai-accelerator_1.0.0_rel_notes) | 20 Nov 2024 | diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml new file mode 100644 index 00000000000..c4d65dc0295 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml @@ -0,0 +1,13 @@ +product: EDB Postgres AI - AI Accelerator +shortname: ai-accelerator +title: EDB Postgres AI - AI Accelerator 1.0.0 release notes +description: Release notes for EDB Postgres AI - AI Accelerator 1.0.0 +intro: | + The EDB Postgres AI - AI Accelerator describes the latest version of AI Accelerator. The release notes provide information on what was new in each release. For the GA 1.0.0 release, differences from the technical preview are highlighted. +columns: +- 0: + label: "AI Accelerator version" + key: version-link +- 1: + label: Release Date + key: shortdate diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.0.yml b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.0.yml new file mode 100644 index 00000000000..a8f839e84cc --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.0.yml @@ -0,0 +1,98 @@ +product: AI Accelerator - Pipelines +version: 1.0.0 +date: 20 November 2024 +intro: | + This is the GA release of EDB Postgres AI - AI Accelerator - Pipelines. Since the technical preview, a number of enhancements have been made. +highlights: | + - Integrated model runtime. + - Support for external models with OpenAI API. + - Secure management of API credentials via postgres "user mapping" feature. + - Model registry that allows configuring internal/external models. + - pgfs/volumes allows working with external data from S3 object stores and file systems. + - Low-level primitives for models: encode, transform for image and text data. + - Enhanced retriever concept for data retrieval. + - Support image and text data, including: Postgres tables, external storage, and ad-hoc queries. + - Support for building fully custom AI workflows/pipelines. +relnotes: +- relnote: Integrated model runtime + details: | + The tech preview had a separate model runtime. Now, the model runtime is integrated into the product. + jira: AID-17 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Support for external models with OpenAI API + details: | + The tech preview only supported internal models. Now, external models can be used with OpenAI API. + jira: + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Secure management of API credentials via postgres "user mapping" feature + details: | + Improved from the tech preview which had no secure credential management. + jira: + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Model registry that allows configuring internal/external models + details: | + A new concept in Pipelines over the tech preview which had only retrievers. + jira: AID-76 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: PGFS allows working with external data from S3 object stores and file systems + details: | + The tech preview could only work with S3 in retrievers. Now, the volume concept allows working with external data in general. + jira: AID-77 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: "Low-level primitives for models: encode, transform for image and text data" + details: | + Low-level primitives for modes have been added to complement the existing high-level functions. + jira: AID-49 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Enhanced retriever concept for data retrieval + details: | + Retriever concept has been enhanced: + - Calls can now return rich table results with data such as vector distance. + - Flexible interface allows "retrieving" just the key or the source data. + - Enables integration with custom workflows/pipelines. + jira: AID-84 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Support image and text data + details: | + Images can be retrieved from + - External storage or Postgres tables. + - Images can also be retrieved from "bytea columns" in Postgres tables + - Also able to be retrieved ad-hoc in a query. + jira: AID-108 + addresses: "" + type: Enhancement + severity: High + impact: High +- relnote: Support for building fully custom AI workflows/pipelines + details: | + - direct SQL access to models (encode, transform, …) even allowing batch-execution + - flexible interfaces in our high-level composite functions (like retrieve) + - allowing direct access to all low-level interfaces that we use in high-level functions; such as exposing functions like "embed_single_row" + jira: AID-41 + addresses: "" + type: Enhancement + severity: High + impact: High + + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/concepts.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/concepts.mdx new file mode 100644 index 00000000000..c2090b154e6 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/concepts.mdx @@ -0,0 +1,67 @@ +--- +title: "Retrievers - Concepts" +navTitle: "Concepts" +deepToC: true +description: "The concepts behind using retrievers in AI Accelerator Pipelines." +--- + +Retrievers can be used for semantic search or for RAG (retrieval augmented generation). +A configured retriever can automatically compute embeddings (vectors) for our input data. +Once this is done, the retriever offers a number of interfaces to return data based on a query. + +## Concepts + +### Data sources and data types + +A Data source is where the data to be embedded/retrieved comes from. + +* Table: a column in a table in the PG database +* Volume: a PGFS "volume" which is a wrapper for accessing e.g. an S3 object store + +Data types are + +* text +* image + +You can combine any data source with any data type: + +* **Table & Text**: The text, in this case, would be just a column with TEXT/VARCHAR type in a Postgres table. This could be the description for a list of products. +* **Table & Image**: The image, in this case, would be stored in a BYTEA column in our table which would hold the bytes of the image. We do not support large objects (also known as BLOB) types at this time. +* **Volume & Text**: For example, this could be text files in an S3 bucket. +* **Volume & Image**: The images could be stored as objects in an S3 bucket. + +### Embedding + +Retrievers always need a "vector table" to store the vector embeddings that belong to the source data. We use a model with "encoder" capabilities to generate the vectors for the source data. + +Each model has a different "dimensionality" i.e. number of dimensions of the vector (the vector [1, 2, 2] has 3 dimensions). We use pgvector "vector" column types to store the embeddings. And those have a fixed number of dimensions. For this reason, the encoder interface on the models returns how many dimensions the vectors will have. + +We create the vector table, or support using an existing one. The vector column dimensionality must fit the model. + +### Consistency with source data + +Embeddings must be in-sync with the source data in order to retrieve correct and consistent data. In the case of the table data source, we use triggers in postgres to be notified about changes on the source table. + +If the source table already has data/rows at the time where the retriever is created, then a manual "bulk embedding" call must be made. + +Auto embedding can be activated to keep the embeddings in sync going forward. + +### Bulk & Auto embedding + +Bulk embedding generates the embeddings for all the existing data in a source table. Use this to initialize the retriever if the source table is not empty. + +!!! Note +Bulk embedding does not "sync" the data; it’s best to run this on an empty vector table. +!!! + +Auto embedding can be manually enabled (automatically too?? TODO). It creates triggers in PG to keep the embeddings up to data if source data is added, updated or removed. + +!!! Note +Auto embedding only works with the "table" data source today; not the volume source. +!!! + + +### Synchronous vs. Asynchronous embedding computation + +* Bulk-embedding is a blocking call that can’t be paused. +* Auto-embedding runs "on top of" other queries during insert/update calls, while waiting on the embedding computation. This means insert/update queries on the source table will be slowed down. diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/example.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/example.mdx new file mode 100644 index 00000000000..5c56ba23bb5 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/example.mdx @@ -0,0 +1,92 @@ +--- +title: Retrievers end to end example usage +navTitle: Example usage +description: Example of using retrievers in AI Accelerator. +--- + +This is a full end-to-end example of using retrievers in EDB Postgres AI - AI Accelerator. + +```sql +-- Create extension +DROP EXTENSION aidb CASCADE; +CREATE EXTENSION aidb CASCADE; + +drop table if exists test_source_table cascade; +drop table if exists test_retriever_vector cascade; + +-- Create source test table +CREATE TABLE test_source_table +( + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + content TEXT NOT NULL, + unrelated_column TEXT +); +INSERT INTO test_source_table +VALUES (43941, 'Catwalk Women Brown Heels'), + (55018, 'Lakme 3 in 1 Orchid Aqua Shine Lip Color'), + (19337, 'United Colors of Benetton Men Stripes Black Jacket'); + + +-- Register model +SELECT aidb.register_model('simple_model', 'bert_local'); + +SELECT aidb.register_retriever_for_table( + p_name => 'test_retriever', + p_model_name => 'simple_model', + p_source_table_name => 'test_source_table', + p_source_table_data_column => 'content', + p_source_table_data_column_type => 'Text', + p_source_table_key_column => 'id', -- Default + p_vector_table_name => 'test_source_table_vector', -- Defaults to `source_table_name + '_vector'` + p_vector_table_vector_column => 'embeddings', -- Default + p_vector_table_key_column => 'id', -- Default + p_topk => 1, -- Default + p_distance_operator => 'L2', -- Default + p_options => '{}'::JSONB -- Default +); + + +-- expect "Table" +SELECT aidb.get_retriever_data_source('test_retriever'); + +SELECT * FROM aidb.retrievers; + +SELECT aidb.bulk_embedding('test_retriever'); + + +-- Perform retrieval similarity search for the closest `key` +SELECT * FROM aidb.retrieve_key('test_retriever', 'orchid'); +SELECT * FROM aidb.retrieve_key('test_retriever', 'orchid', 2); -- Limit to top 2 results + +SELECT * FROM aidb.retrieve_text('test_retriever', 'orchid'); +SELECT * FROM aidb.retrieve_text('test_retriever', 'orchid', 2); -- Limit to top 2 results + + +-- enable the auto embedding +SELECT aidb.enable_auto_embedding_for_table('test_retriever'); + + +-- add additional data to test auto-embedding +INSERT INTO test_source_table +VALUES (11211, 'Bicycle'), + (11311, 'What is this?'), + (11411, 'Elephants'); + + +-- check embeddings +SELECT id FROM test_retriever_vector; + +-- delete one of the source rows +DELETE FROM test_source_table WHERE id = 11211; + +-- check embeddings +SELECT id FROM test_retriever_vector; + +-- enable the auto embedding +SELECT aidb.disable_auto_embedding_for_table('test_retriever'); +INSERT INTO test_source_table VALUES (212121, 'new value'); + + +select aidb.delete_retriever('test_retriever'); +``` + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/index.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/index.mdx new file mode 100644 index 00000000000..5de10985b94 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/index.mdx @@ -0,0 +1,15 @@ +--- +title: "AI Accelerator - Pipelines - Retrievers" +navTitle: "Retrievers" +deepToC: true +description: "Creating and using retrievers in AI Accelerator Pipelines." +navigation: +- concepts +- usage +- example +--- + +Retrievers can be used for semantic search or for RAG (retrieval augmented generation). + +A configured retriever can automatically compute embeddings (vectors) for our input data. Once this is done, the retriever offers a number of interfaces to return data based on a query. + diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/usage.mdx b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/usage.mdx new file mode 100644 index 00000000000..2090db7a5f1 --- /dev/null +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/retrievers/usage.mdx @@ -0,0 +1,152 @@ +--- +title: "Pipelines - Retrievers - Usage" +navTitle: "Usage" +deepToC: true +description: "Usage of retrievers in AI Accelerator Pipelines." +--- + +## Creating a new retriever configuration + +There are two types of retrievers: table and volume. Given the different nature of the data sources, and the options required for each we have different functions to register them. + +## Retriever for a table data source + +The [register_retriever_for_table](../reference/retrievers#aidbregister_retriever_for_table) function is used to create a retriever for a table data source. This is the function signature, you can see many of those are optional and have defaults. + +``` +register_retriever_for_table( +------------------------------------------------------------------------------- + p_name TEXT, + p_model_name, TEXT, + p_source_table_name regclass, + p_source_table_data_column TEXT, + p_source_table_data_column_type aidb.RetrieverSourceDataFormat, + p_source_table_key_column TEXT DEFAULT 'id', + p_vector_table_name TEXT DEFAULT NULL, + p_vector_table_vector_column TEXT DEFAULT 'embeddings', + p_vector_table_key_column TEXT DEFAULT 'id', + p_topk INTEGER DEFAULT 1, + p_distance_operator aidb.distanceoperator DEFAULT 'L2', + p_options JSONB DEFAULT '{}'::JSONB +) +``` + +### Example: Registering a retriever + +``` sql +SELECT aidb.register_retriever_for_table( + p_name => 'test_retriever', + p_model_name => 'simple_model', + p_source_table_name => 'test_source_table', + p_source_table_data_column => 'content', + p_source_table_data_column_type => 'Text' + ); +``` + +In this example, we use all the defaults. + +## Creating the Embeddings + +Bulk embedding if there is existing data in the source table: + +```sql +SELECT aidb.bulk_embedding('test_retriever'); +``` + +Enable auto-embedding for any future changes: + +```sql +SELECT aidb.enable_auto_embedding_for_table('test_retriever'); +``` + +You can disable auto-embedding as well: + +```sql +SELECT aidb.disable_auto_embedding_for_table('test_retriever'); +``` + +## Retrieving + +A basic key retriever is available that does not look up the source data, but just returns the ID/key of the matching embeddings: + +### Retrieving the key + +```sql +aidb.retrieve_key(, , ); +``` + +### Example: Retrieving the key + +```sql +SELECT * FROM aidb.retrieve_key('test_retriever', 'shoes', 2); +__OUTPUT__ + key | distance +-------+-------------------- + 43941 | 0.2938963414490189 + 19337 | 0.3023805122617119 +(2 rows) +``` + +This can be used if you want to do a join/lookup yourself based on the key. For retrievers with external (volume) data sources, this is especially useful. Usually the application itself wants to do the retrieval from the external data source. Or you might want to push-down the actual retrieval to a client application. + +The retrieve_text function joins the embeddings with the source data and directly returns the results: + +### Retrieving the text + +The retrieve_text function joins the embeddings with the source data and directly returns the results: + +```sql +aidb.retrieve_text(, , ); +``` + +### Example + +```sql +SELECT * FROM aidb.retrieve_text('test_retriever', 'jacket', 2); +__OUTPUT__ + key | value | distance +-------+----------------------------------------------------+-------------------- + 19337 | United Colors of Benetton Men Stripes Black Jacket | 0.2994317672742334 + 55018 | Lakme 3 in 1 Orchid Aqua Shine Lip Color | 0.3804609668507203 +(2 rows) + ``` + +## Listing the retrievers + +A view is available that lists all the retrievers. [aidb.retrievers](../reference/retrievers#aidbretrievers) also includes some of the retrievers configuration: + +```sql +SELECT * FROM aidb.retrievers; +__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 +----+---------------------+----------------------------+-------------------------+----------------------------+--------------+------+-------------------+---------+-------------------+--------------------------+-------------------------------+-------------------------+-------------------- + 2 | test_retriever | test_retriever_vector | id | embeddings | simple_model | 5 | InnerProduct | {} | test_source_table | content | Text | id | + 5 | test_retriever_cosa | test_retriever_cosa_vector | id | embeddings | simple_model | 1 | L2 | {} | test_source_table | content | Text | id | + 3 | test_retriever_cos | test_retriever_cos_vector | id | embeddings | simple_model | 5 | Cosine | {} | test_source_table | content | Text | id | +(3 rows) +``` + +It is recommended that you just select the columns you are interested in: + +```sql +SELECT name, source_table_name FROM aidb.retrievers; +__OUTPUT__ + name | source_table_name +---------------------+------------------- + test_retriever | test_source_table + test_retriever_cos | test_source_table + test_retriever_cosa | test_source_table +(3 rows) +``` + +## Deleting a retriever + +This will not delete the vector table or anything else, just the configuration: + +```sql +SELECT aidb.delete_retriever(); +``` + +## End to end example + +You can find an end-to-end example for a table/text retriever at on the Retrievers [example](example) page. diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/index.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/index.mdx deleted file mode 100644 index 9a674a1250f..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: EDB Postgres AI - AI/ML -navTitle: AI/ML -indexCards: simple -iconName: BrainCircuit -description: How to make use of EDB Postgres AI for AI/ML workloads and using the aidb extension. -navigation: -- overview -- install-tech-preview -- using-tech-preview ---- - -EDB Postgres® AI Database is designed to solve all AI data management needs, including storing, searching, and retrieving of AI data. This up-levels Postgres to a database that manages and serves all types of data modalities directly and combines it with its battle-proof strengths as an established Enterprise system of record that manages high-value business data. - -In this tech preview, you can use the aidb extension to build a simple retrieval augmented generation (RAG) application in Postgres. - -An [overview](overview) of the aidb extension gives you a high-level understanding of the major functionality available to date. - -To get started, you will need to [install the aidb tech preview](install-tech-preview) and then you can start [using the aidb tech preview](using-tech-preview) to build your RAG application. - - - - diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/install-tech-preview.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/install-tech-preview.mdx deleted file mode 100644 index fb4bab5791e..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/install-tech-preview.mdx +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: EDB Postgres AI AI/ML - Installing the aidb tech preview -navTitle: Installing -description: How to install the EDB Postgres AI AI/ML aidb tech preview and run the container image. -prevNext: true ---- - -The preview release of aidb is distributed as a self-contained Docker container that runs PostgreSQL and includes all of the aidb dependencies. - -## Configuring and running the container image - -If you haven't already, sign up for an EDB account and log in to the EDB container registry. - -Log in to Docker with the username tech-preview and your EDB Repos 2.0 subscription token as your password: - -```shell -docker login docker.enterprisedb.com -u tech-preview -p -__OUTPUT__ -Login Succeeded -``` - -Download the aidb container image: - -```shell -docker pull docker.enterprisedb.com/tech-preview/aidb -__OUTPUT__ -... -Status: Downloaded newer image for docker.enterprisedb.com/tech-preview/aidb:latest -docker.enterprisedb.com/tech-preview/aidb:latest -``` - -Specify a password to use for Postgres in the environment variable PGPASSWORD. The tech preview container set up Postgres with this password and use it to connect to it. In bash or zsh set it as follows: - -```shell -export PGPASSWORD= -``` - -You can use the aidb extension with encoder LLMs in Open AI or with open encoder LLMs from HuggingFace. If you want to use Open AI you also must provide your API key for that in the OPENAI_API_KEY environment variable: - -```shell -export OPENAI_API_KEY= -``` - -You can use the aidb extension with AI data stored in Postgres tables or on S3 compatible object storage. To work with object storage you need to specify the ACCESS_KEY and SECRET_KEY environment variables: - -```shell -export ACCESS_KEY= -export SECRET_KEY= -``` - -Start the aidb tech preview container with the following command. It makes the tech preview PostgreSQL database available on local port 15432: - -```shell -docker run -d --name aidb \ - -e ACCESS_KEY=$ACCESS_KEY \ - -e SECRET_KEY=$SECRET_KEY \ - -e OPENAI_API_KEY=$OPENAI_API_KEY \ - -e POSTGRES_PASSWORD=$PGPASSWORD \ - -e PGDATA=/var/lib/postgresql/data/pgdata \ - -p 15432:5432 \ - docker.enterprisedb.com/tech-preview/aidb:latest -``` - - -## Connect to Postgres - -If you haven't yet, install the Postgres command-line tools. If you're on a Mac, using Homebrew, you can install it as follows: - -```shell -brew install libpq -``` - -Connect to the tech preview PostgreSQL running in the container. Note that this relies on setting the PGPASSWORD environment variable - if you're using a different terminal for this part, make sure you re-export the password: - -```shell -psql -h localhost -p 15432 -U postgres postgres -__OUTPUT__ -psql (16.1, server 16.3 (Debian 16.3-1.pgdg120+1)) -Type "help" for help. - -postgres=# -``` - - -Install the aidb extension: - -```sql -create extension aidb cascade; -__OUTPUT__ -NOTICE: installing required extension "plpython3u" -NOTICE: installing required extension "vector" -CREATE EXTENSION -postgres=# -``` - -```sql -\dx -__OUTPUT__ - List of installed extensions - Name | Version | Schema | Description -------------+---------+------------+------------------------------------------------------ - aidb | 0.0.2 | public | An extension to do the AIs - plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language - plpython3u | 1.0 | pg_catalog | PL/Python3U untrusted procedural language - vector | 0.7.2 | public | vector data type and ivfflat and hnsw access methods -(4 rows) -``` diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/overview.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/overview.mdx deleted file mode 100644 index b60573afbc2..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/overview.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: EDB Postgres AI AI/ML - Overview -navTitle: Overview -description: Where to start with EDB Postgres AI AI/ML and the aidb tech preview. -prevNext: True ---- - -At the heart of EDB Postgres® AI is the EDB Postgres AI database (aidb). This builds on Postgres's flexibility and extends its capability to include storing the vector data of embeddings. - -The aidb extension is currently available as a tech preview. It will be continuously extended with new functions. This overview presents the functionality available to date. - -![AIDB Overview](images/aidb-overview-withbackground.png) - -aidb introduces the concept of a “retriever” that you can create for a given type and location of AI data. Currently aidb supports unstructured plain text documents as well as a set of image formats. This data can either reside in regular columns of a Postgres table or it can reside in an S3 compatible object storage bucket. - -A retriever encapsulates all processing that is needed to make the AI data in the provided source location searchable and retrievable through similarity. The application just needs to create a retriever via the `aidb.create_retriever()` function. When `auto_embedding=TRUE` is specified the aidb extension will automatically generate embeddings for all the data in the source location. - -Otherwise it will be up to the application to request a bulk generation of embeddings using `aidb.refresh_retriever()`. - -Auto embedding is currently supported for AI data stored in Postgres tables and it automates the embedding updates using Postgres triggers. You can also combine the two options by using aidb.refresh_retriever() to embed all previously existing data and also setting `auto_embedding=TRUE` to generate embeddings for all new and changed data from now on. - -All embedding generation, storage, indexing, and management is handled by the aidb extension internally. The application just has to specify the encoder LLM that the retriever should be using for this specific data and use case. - -Once a retriever is created and all embeddings are up to date, the application can just use aidb.retrieve() to run a similarity search and retrieval by providing a query input. When the retriever is created for text data, the query input is also a text term. For image retrievers the query input is an image. The aidb retriever makes sure to use the same encoder LLM for the query input, conducts a similarity search and finally returns the ranked list of similar data from the source location. - -aidb currently supports a broad list of open encoder LLMs from HuggingFace as well as a set of OpenAI encoders. Consult the list of supported encoder LLMs in the aidb.encoders meta table. HuggingFace LLMs are running locally on the Postgres node, while OpenAI encoders involve a call out to the OpenAI cloud service. - - - - diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/additional_functions.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/additional_functions.mdx deleted file mode 100644 index f8d2eb568c7..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/additional_functions.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Additional functions and standalone embedding in aidb -navTitle: Additional functions -description: Other aidb extension functions and how to generate embeddings for images and text. ---- - -## Standalone embedding - -Use the `generate_single_image_embedding` function to get embeddings for the given image. Currently, `model_provider` can only be `openai` or `huggingface`. You can check the list of valid embedding models and model providers from the Encoders Supported AIDB section. - -```sql -SELECT aidb.generate_single_image_embedding( - 'clip-vit-base-patch32', -- embedding model name - 'openai', -- model provider - 'https://s3.us-south.cloud-object-storage.appdomain.cloud', -- S3 endpoint - 'torsten', -- S3 bucket name - 'foto.jpg' -- img object to generate embeddings -); -__OUTPUT__ - generate_single_image_embedding --------------------------------- - -(1 row) -``` - -Use the `generate_text_embedding` function to get embeddings for the given image. Currently, the `model_provider` can only be `openai` or `huggingface`. - -```sql -SELECT aidb.generate_text_embedding( -'text-embedding-3-small', -- embedding model name -'openai', -- model provider - 0, -- dimensions, setting 0 will replace with the default value in encoder's table -'Veggie Burger' -- text to generate embeddings -); -__OUTPUT__ - generate_text_embedding ------------------------- - -(1 row) -``` - -## Supported encoders - -You can check the list of valid embedding models and model providers from aidb.encoders table - -```sql -SELECT provider, count(*) encoder_model_count FROM aidb.encoders group by (provider); -__OUTPUT__ - provider | encoder_model_count --------------+--------------------- - huggingface | 36 - openai | 4 -(2 rows) -``` - -## Available functions - -You can find the complete list of currently available functions of the aidb extension by selecting from `information_schema.routines` any `routine_name` belonging to the aidb routine schema: - - -``` -SELECT routine_name from information_schema.routines WHERE routine_schema='aidb'; -__OUTPUT__ - routine_name ---------------------------------- - init - create_pg_retriever - create_s3_retriever - _embed_table_update - refresh_retriever - retrieve - retrieve_via_s3 - register_prompt_template - render_prompt - generate - ag - rag - generate_text_embedding - generate_single_image_embedding -(14 rows) -``` - diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/index.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/index.mdx deleted file mode 100644 index e5cf52f6c2d..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/index.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: EDB Postgres AI AI/ML - Using the aidb tech preview -navTitle: Using -description: Using the EDB Postgres AI AI/ML tech preview to build a simple retrieval augmented generation (RAG) application in Postgres. -navigation: -- working-with-ai-data-in-postgres -- working-with-ai-data-in-s3 -- additional_functions ---- - -This section shows how you can use your [newly installed aidb tech preview](../install-tech-preview) to retrieve and generate AI data in Postgres. - -* [Working with AI data in Postgres](working-with-ai-data-in-postgres) details how to use the aidb extension to work with AI data stored in Postgres tables. - -* [Working with AI data in S3](working-with-ai-data-in-S3) covers how to use the aidb extension to work with AI data stored in S3 compatible object storage. - -* [Additional functions](additional_functions) notes other aidb extension functions and how to generate standalone embeddings for images and text. - - - diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-S3.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-S3.mdx deleted file mode 100644 index ce92940ddb2..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-S3.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Working with AI data stored in S3-compatible object storage -navTitle: Working with AI data in S3 -description: How to work with AI data stored in S3-compatible object storage using the aidb extension. ---- - -The following examples demonstrate how to use the aidb functions with S3-compatible object storage. You can use the following examples as is, because they use a publicly accessible example S3 bucket. Or you can prepare your own S3 compatible object storage bucket with some test data and try the steps in this section with that data. - -These examples also use image data and an appropriate image encoder LLM instead of text data. You could, though, use plain text data on object storage similar to the examples in [Working with AI data in Postgres](working-with-ai-data-in-postgres). - -### Creating a retriever - -Start by creating a retriever for images stored on s3-compatible object storage as the source using the `aidb.create_s3_retriever` function. - -``` -aidb.create_s3_retriever( - retriever_name text, - schema_name text, - model_name text, - data_type text, - bucket_name text, - prefix text, - endpoint_url text -) -``` - -* The `retriever_name` is used to identify and reference the retriever; set it to `image_embeddings` for this example. -* The `schema_name` is the schema where the source table is located. -* The `model_name` is the name of the embeddings encoder model for similarity data; set it to [`clip-vit-base-patch32`](https://huggingface.co/openai/clip-vit-base-patch32) to use the open encoder model for image data from HuggingFace. -* The `data_type` is the type of data in the source table, which could be either `img` or `text`; set it to `img`. -* The `bucket_name` is the name of the S3 bucket where the data is stored; set this to `torsten`. -* The `prefix` is the prefix of the objects in the bucket; set this to an empty string because you want all the objects in that bucket. -* The `endpoint_url` is the URL of the S3 endpoint; set that to `https://s3.us-south.cloud-object-storage.appdomain.cloud` to access the public example bucket. - -This gives the following SQL command: - -```sql -SELECT aidb.create_s3_retriever( - 'image_embeddings', -- Name of the similarity retrieval setup - 'public', -- Schema of the source table - 'clip-vit-base-patch32', -- Embeddings encoder model for similarity data - 'img', -- data type, could be either img or text - 'torsten', -- S3 bucket name - '', -- prefix - 'https://s3.us-south.cloud-object-storage.appdomain.cloud' -- s3 endpoint address -); -__OUTPUT__ - create_s3_retriever ---------------------- - -(1 row) -``` - -### Refreshing the retriever - -Next, run the `aidb.refresh_retriever` function. - -```sql -SELECT aidb.refresh_retriever('image_embeddings'); -__OUTPUT__ - refresh_retriever -------------------- - -(1 row) -``` - -### Retrieving data - -Finally, run the `aidb.retrieve_via_s3` function with the required parameters to retrieve the top K most relevant (most similar) AI data items. Be aware that the object type is currently limited to image and text files. The syntax for `aidb.retrieve_via_s3` is: - -```sql -aidb.retrieve_via_s3( - retriever_name text, - topk integer, - bucket text, - object text, - s3_endpoint text) -``` - -* The `retriever_name` is used to identify and reference the retriever; set it to `image_embeddings` for this example. -* The `topk` is the number of most relevant data items to retrieve; set this to 1. -* The `bucket` is the name of the S3 bucket where the data is stored. -* The `object` is the name of the object in the bucket. -* The `endpoint_url` is the URL of the S3 endpoint. - - -Run the `aidb.retrieve_via_s3` function with the required parameters to retrieve the top K most relevant (most similar) AI data items. Be aware that the object type is currently limited to image and text files. - -```sql -SELECT data from aidb.retrieve_via_s3( - 'image_embeddings', -- retriever's name - 1, -- top K - 'torsten', -- S3 bucket name - 'foto.jpg', -- object name - 'https://s3.us-south.cloud-object-storage.appdomain.cloud' -); -__OUTPUT__ - data --------------------- - {'img_id': 'foto'} - (1 row) -``` - diff --git a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-postgres.mdx b/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-postgres.mdx deleted file mode 100644 index 592ceee6a4f..00000000000 --- a/advocacy_docs/edb-postgres-ai/ai-ml/using-tech-preview/working-with-ai-data-in-postgres.mdx +++ /dev/null @@ -1,281 +0,0 @@ ---- -title: Working with AI data stored in Postgres tables -navTitle: Working with AI data in Postgres -description: How to work with AI data stored in Postgres tables using the aidb extension. ---- - -The examples on this page are about working with AI data stored in columns in the Postgres table. - -To see how to use AI data stored in S3-compatible object storage, skip to [working with AI data in S3](working-with-ai-data-in-S3). - -Begin by creating a Postgres table for some test AI data: - -```sql -CREATE TABLE products ( - product_id SERIAL PRIMARY KEY, - product_name TEXT NOT NULL, - description TEXT, - last_updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -); -__OUTPUT__ -CREATE TABLE -``` - -## Working with auto embedding - -Next, you are going to create a retriever with the just created products table as the source using the `aidb.create_pg_retriever` function which has this syntax: - -```sql -aidb.create_pg_retriever( - retriever_name text, - schema_name text, - primary_key text, - model_name text, - data_type text, - source_table text, - columns text[], - auto_embedding boolean -) -``` - -* The `retriever_name` is used to identify and reference the retriever; set it to `product_embeddings_auto` for this example. -* The `schema_name` is the schema where the source table is located; set this to `public`. -* The `primary_key` is the primary key column of the source table. -* The `model_name` is the name of the embeddings encoder model for similarity data; set it to `all-MiniLM-L6-v2` to use the open encoder model for text data from HuggingFace. -* The `data_type` is the type of data in the source table, which could be either `img` or `text`. Set it to `text`. -* The `source_table` is the name of the source table. The source table created previously, is `products` so set it to that. -* The `columns` is an array of columns to use for the similarity search by the retriever. Set this to `ARRAY['product_name', 'description']` to use the product_name and description columns. -* The `auto_embedding` is a boolean value to set a trigger for auto embeddings. Set it to TRUE so that any future insert, update or delete to the source table shall automatically generate, update or delete also the corresponding embedding. - -This gives the following SQL command: - -```sql -SELECT aidb.create_pg_retriever( - 'product_embeddings_auto', -- Retriever name - 'public', -- Schema - 'product_id', -- Primary key - 'all-MiniLM-L6-v2', -- embedding model - 'text', -- data type - 'products', -- Source table - ARRAY['product_name', 'description'], -- Columns to vectorize - TRUE -- auto embeddings TRUE to set trigger -); -__OUTPUT__ - create_pg_retriever ---------------------- - -(1 row) -``` - -You have now created a retriever for the products table. The next step is to insert some AI data records into the products table. -Since you set `auto_embedding` to true, the retriever shall automatically generate all embeddings in real-time for each inserted record: - -```sql -INSERT INTO products (product_name, description) VALUES - ('Hamburger', 'Tasty'), - ('Cheesburger', 'Very tasty'), - ('Fish n Chips', 'Naa'), - ('Fries', 'Dunno'), - ('Burrito', 'Always'), - ('Pizza', 'Mkay'), - ('Sandwich', 'So what'), - ('Veggie Burger', 'Go away'), - ('Kebab', 'Maybe'); -__OUTPUT__ -INSERT 0 9 -``` - -Now you can use the retriever, by specifying the retriever name, to perform a similarity retrieval of the top K most relevant, in this case most similar, AI data items. You can do this by running the `aidb.retrieve` function with the required parameters: - -```sql -aidb.retrieve( - query text, - top_k integer, - retriever_name text -) -``` - -* The `query` is the text to use to retrieve the top similar data. Set it to `I like it`. -* The `top_k` is the number of top similar data items to retrieve. Set this to 5 -* The `retriever_name` is the name of the retriever. The retriever's name is `product_embeddings_auto`. - -This gives the following SQL command: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_auto' -- retriever's name -); -__OUTPUT__ - data --------------------------------------- - {'data': 'Hamburger - Tasty'} - {'data': 'Cheesburger - Very tasty'} - {'data': 'Pizza - Mkay'} - {'data': 'Sandwich - So what'} - {'data': 'Kebab - Maybe'} -(5 rows) -``` - -## Working without auto embedding - -You can now create a retriever without auto embedding. This means that the application has control over when the embeddings computation occurs. It also means that the computation is a bulk operation. For demonstration you can simply create a second retriever for the same products table that you just previously created the first retriever for, but setting `auto_embedding` to false. - -```sql -SELECT aidb.create_pg_retriever( - 'product_embeddings_bulk', -- Retriever name - 'public', -- Schema - 'product_id', -- Primary key - 'all-MiniLM-L6-v2', -- embedding model - 'text', -- data type - 'products', -- Source table - ARRAY['product_name', 'description'], -- Columns to vectorize - FALSE -- auto embeddings FALSE -); -__OUTPUT__ - create_pg_retriever ---------------------- - -(1 row) -``` - -The AI records are already in the table though. As this second retriever is newly created, it won't have created any embeddings. Running `aidb.retrieve` using the retriever now doesn't return any results: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_bulk' -- retriever's name -); -__OUTPUT__ - data ------- -(0 rows) -``` - -You need to run a bulk generation of embeddings before performing any retrieval. You can do this using the `aidb.refresh_retriever` function: - -``` -aidb.refresh_retriever( - retriever_name text -) -``` - -The `retriever_name` is the name of the retriever. Our retriever's name is `product_embeddings_bulk`. So the SQL command is: - -```sql -SELECT aidb.refresh_retriever( -'product_embeddings_bulk' -- name of the retriever -); -__OUTPUT__ -INFO: inserted table name public._aidb_embeddings_product_embeddings_bulk - refresh_retriever -------------------- - -(1 row) -``` - -You can now run that retrieve operation using the second retriever and get the same results as with the first retriever: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_bulk' -- retriever's name -); -__OUTPUT__ - data --------------------------------------- - {'data': 'Hamburger - Tasty'} - {'data': 'Cheesburger - Very tasty'} - {'data': 'Pizza - Mkay'} - {'data': 'Sandwich - So what'} - {'data': 'Kebab - Maybe'} -(5 rows) -``` - -The next step is to see what happens if when you add more AI data records: - -```sql -INSERT INTO products (product_name, description) VALUES - ('Chicken Nuggets', 'Never'), - ('Ramen', 'Delicious'); -__OUTPUT__ -INSERT 0 2 -``` - -The new data is automatically picked up in the retrieval from the first retriever with auto embeddings: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_auto' -- retriever's name -); -__OUTPUT__ - data --------------------------------------- - {'data': 'Hamburger - Tasty'} - {'data': 'Cheesburger - Very tasty'} - {'data': 'Pizza - Mkay'} - {'data': 'Sandwich - So what'} - {'data': 'Ramen - Delicious'} -(5 rows) -``` - -The second retriever without auto embedding doesn't reflect the new data. It can only do so when once there has been another explicit call to `aidb.refresh_retriever`. Until then, the results don't change: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_bulk' -- retriever's name -); -__OUTPUT__ - data --------------------------------------- - {'data': 'Hamburger - Tasty'} - {'data': 'Cheesburger - Very tasty'} - {'data': 'Pizza - Mkay'} - {'data': 'Sandwich - So what'} - {'data': 'Kebab - Maybe'} -(5 rows) -``` - -If you now call `aidb.refresh_retriever()` again, the embeddings computation uses the new data to refresh the embeddings: - -```sql -SELECT aidb.refresh_retriever( -'product_embeddings_bulk' -- name of the retriever -); -__OUTPUT__ -INFO: inserted table name public._aidb_embeddings_product_embeddings_bulk - refresh_retriever -------------------- -``` - -And the new data shows up in the results of the query when you call the `aidb.retrieve` function again: - -```sql -SELECT data FROM aidb.retrieve( -'I like it', -- The query text to retrieve the top similar data - 5, -- top K -'product_embeddings_bulk' -- retriever's name -); -__OUTPUT__ - data --------------------------------------- - {'data': 'Hamburger - Tasty'} - {'data': 'Cheesburger - Very tasty'} - {'data': 'Pizza - Mkay'} - {'data': 'Sandwich - So what'} - {'data': 'Ramen - Delicious'} -(5 rows) -``` - -You used the two different retrievers for the same source data just to demonstrate the workings of auto embedding compared to explicit `refresh_retriever()`. - -In practice you may want to combine auto embedding and refresh_retriever() in a single retriever to conduct an initial embedding of data that existed before you created the retriever and then rely on auto embedding for any future data that's ingested, updated, or deleted. - -You should consider relying on `aidb.refresh_retriever`, and not using auto embedding, if you typically ingest a lot of AI data at once as a batch. diff --git a/advocacy_docs/edb-postgres-ai/cloud-service/index.mdx b/advocacy_docs/edb-postgres-ai/cloud-service/index.mdx index 2bea31b38d2..2dd9e405457 100644 --- a/advocacy_docs/edb-postgres-ai/cloud-service/index.mdx +++ b/advocacy_docs/edb-postgres-ai/cloud-service/index.mdx @@ -22,7 +22,7 @@ The EDB Postgres® AI Cloud Service is a holistic platform which includes hybrid ## Overview -The EDB Postgres AI Cloud Service itself is a fully managed cloud service that provides a high-performance, scalable, and secure database platform for analytics and AI workloads. It also provides the platform for [EDB Postgres AI Analytics](../analytics/) and [EDB Postgres AIDB](../ai-ml/) services. +The EDB Postgres AI Cloud Service itself is a fully managed cloud service that provides a high-performance, scalable, and secure database platform for analytics and AI workloads. It also provides the platform for [EDB Postgres AI Analytics](../analytics/) and [EDB Postgres AIDB](/edb-postgres-ai/ai-accelerator/) services. Cloud Service builds on the [EDB Postgres Advanced Server](/epas/latest) and [EDB Postgres Extended](/pge/latest) databases and it's designed to help organizations accelerate the development and deployment of AI and analytics applications. diff --git a/advocacy_docs/edb-postgres-ai/overview/guide-and-getting-started.mdx b/advocacy_docs/edb-postgres-ai/overview/guide-and-getting-started.mdx index 831c0bf4e72..1b9abe914c4 100644 --- a/advocacy_docs/edb-postgres-ai/overview/guide-and-getting-started.mdx +++ b/advocacy_docs/edb-postgres-ai/overview/guide-and-getting-started.mdx @@ -10,7 +10,7 @@ You'll want to look at the [EDB Postgres® AI Analytics](/edb-postgres-ai/analyt ## Are you looking at running machine learning models on your Postgres data? -You'll want to look at the [EDB Postgres® AI Machine Learning](/edb-postgres-ai/ai-ml) documentation, which covers the technical preview of the aidb extension. +You'll want to look at the [EDB Postgres® AI - AI Accelerator](/edb-postgres-ai/ai-accelerator/) documentation. ## Do you need to migrate your data to Postgres? @@ -27,4 +27,3 @@ You'll want to look at the [EDB Postgres® AI Platform Agent](/edb-postgres-ai/c ## Do you want to know more about the EDB Postgres AI Cloud Service? You'll want to look at the [EDB Postgres® AI Cloud Service](/edb-postgres-ai/cloud-service/) documentation, which covers the Cloud Service and its databases. - diff --git a/advocacy_docs/edb-postgres-ai/overview/latest-release-news/2024q2release.mdx b/advocacy_docs/edb-postgres-ai/overview/latest-release-news/2024q2release.mdx index 7f596fc727d..1d036ae43e0 100644 --- a/advocacy_docs/edb-postgres-ai/overview/latest-release-news/2024q2release.mdx +++ b/advocacy_docs/edb-postgres-ai/overview/latest-release-news/2024q2release.mdx @@ -39,7 +39,7 @@ Delta Lake protocol. Customers can sync tables from transactional sources (initially, EDB Postgres AI Cloud Service databases) into Lakehouse tables in managed storage locations (initially, S3 object storage buckets). -### Technical preview of [EDB aidb extension](/edb-postgres-ai/ai-ml) +### Technical preview of [EDB aidb extension](/edb-postgres-ai/ai-accelerator/) Customers can now access a technical preview of the new EDB aidb extension, which seamlessly integrates and manages AI data for enterprise workloads with diff --git a/advocacy_docs/edb-postgres-ai/overview/overview-and-concepts.mdx b/advocacy_docs/edb-postgres-ai/overview/overview-and-concepts.mdx index bbc099f6a4d..68cd13616d9 100644 --- a/advocacy_docs/edb-postgres-ai/overview/overview-and-concepts.mdx +++ b/advocacy_docs/edb-postgres-ai/overview/overview-and-concepts.mdx @@ -13,19 +13,20 @@ EDB Postgres AI is composed of multiple elements which come together to deliver The Console is the gateway to EDB Postgres AI. Starting with a single pane of glass onto all your EDB Postgres AI operations, Console is there to manage your database landscape. It also lets you create and manage your databases, and provides a view of your databases' health and performance. Add to that the ability to bring up Lakehouse Analytics and AI/ML capabilities, and you have the power of EDB Postgres AI at your fingertips. -- **[EDB Postgres AI Estate](/edb-postgres-ai/console/estate)** - - EDB Postgres AI Cloud Service databases are managed on the Console. The Estate can also monitor the health of AWS RDS and S3 resources. Using the Agent, on-premises databases are shown and managed in the same view. -- **[EDB Postgres AI Agent](/edb-postgres-ai/console/estate/agent/)** - - Include on-premises databases under the Console's single pane of glass view with the Agent. The Agent is part of giving EDB Postgres AI an unprecedented view of diverse deployments. +- **[EDB Postgres AI Estate](/edb-postgres-ai/console/estate)** + - EDB Postgres AI Cloud Service databases are managed on the Console. The Estate can also monitor the health of AWS RDS and S3 resources. Using the Agent, on-premises databases are shown and managed in the same view. +- **[EDB Postgres AI Agent](/edb-postgres-ai/console/estate/agent/)** + - Include on-premises databases under the Console's single pane of glass view with the Agent. The Agent is part of giving EDB Postgres AI an unprecedented view of diverse deployments. + ## [EDB Postgres AI Cloud Service](/edb-postgres-ai/cloud-service) Not just databases, but driven by databases, Cloud Service provides a global platform for delivering new elements of EDB Postgres AI efficiently and effectively. -- **[Cloud Service Hosted](/edb-postgres-ai/cloud-service/getting_started/planning/choosing_your_deployment/edb_hosted_cloud_service/)** - - The Cloud Service Hosted environment is where you can experience the full power of EDB Postgres AI, with all the elements of the platform available to you. -- **[Cloud Service Managed](/edb-postgres-ai/cloud-service/getting_started/planning/choosing_your_deployment/your_cloud_account/)** - - Bring your own cloud account to EDB and let the Managed Service environment take care of deploying and managing your Postgres databases in your own cloud provider account. +- **[Cloud Service Hosted](/edb-postgres-ai/cloud-service/getting_started/planning/choosing_your_deployment/edb_hosted_cloud_service/)** + - The Cloud Service Hosted environment is where you can experience the full power of EDB Postgres AI, with all the elements of the platform available to you. +- **[Cloud Service Managed](/edb-postgres-ai/cloud-service/getting_started/planning/choosing_your_deployment/your_cloud_account/)** + - Bring your own cloud account to EDB and let the Managed Service environment take care of deploying and managing your Postgres databases in your own cloud provider account. ## [EDB Postgres AI Databases](/edb-postgres-ai/databases) @@ -33,25 +34,26 @@ All of EDB's database expertise can be found in EDB Postgres Advanced Server and All of these components are available on the EDB Postgres AI Cloud Service, and managed through the EDB Postgres AI Console. -- **[EDB Postgres Advanced Server](/epas/latest)** - - EDB Postgres Advanced Server provides mission-critical capabilities for your data along with Oracle compatibility. -- **[EDB Postgres Extended Server](/pge/latest)** - - EDB Postgres Extended Server delivers for large-scale, mission-critical enterprise workloads, providing a robust and scalable environment for your data. -- **[EDB Postgres Distributed](/pgd/latest)** - - High availability with an active-active mesh of Postgres instances, EDB Postgres Distributed provides a dynamic, resilient, and scalable environment for your data. +- **[EDB Postgres Advanced Server](/epas/latest)** + - EDB Postgres Advanced Server provides mission-critical capabilities for your data along with Oracle compatibility. +- **[EDB Postgres Extended Server](/pge/latest)** + - EDB Postgres Extended Server delivers for large-scale, mission-critical enterprise workloads, providing a robust and scalable environment for your data. +- **[EDB Postgres Distributed](/pgd/latest)** + - High availability with an active-active mesh of Postgres instances, EDB Postgres Distributed provides a dynamic, resilient, and scalable environment for your data. ## [EDB Postgres AI Lakehouse analytics](/edb-postgres-ai/analytics) Filtering out the data noise and revealing insights and value, Lakehouse analytics brings both structured relational data in Postgres and unstructured data in object storage together for exploration. -- **[Lakehouse nodes](/edb-postgres-ai/analytics/concepts/)** - - At the heart of Analytics is custom-built object storage for your data. Built to bring structured and unstructured data together, Lakehouse nodes support numerous formats to bring cold data in, ready for analysis. +- **[Lakehouse nodes](/edb-postgres-ai/analytics/concepts/)** + - At the heart of Analytics is custom-built object storage for your data. Built to bring structured and unstructured data together, Lakehouse nodes support numerous formats to bring cold data in, ready for analysis. + +## [EDB Postgres AI - AI Accelerator](/edb-postgres-ai/ai-accelerator/) -## [EDB Postgres AI AI/ML](/edb-postgres-ai/ai-ml) -* Postgres has proven its capability as a flexible data environment. With vector data as the core of generative AI, it's already infused into EDB Postgres AI, providing a platform for a range of practical and effective AI/ML solutions. A technical preview of this capability is available for the Postgres aidb extension. +- Postgres has proven its capability as a flexible data environment. With vector data as the core of generative AI, it's already infused into EDB Postgres AI, providing a platform for a range of practical and effective AI/ML solutions. ## [EDB Postgres AI Platforms and tools](/edb-postgres-ai/platforms-and-tools) -- Postgres extensions are a source of its power and popularity, and are one of the categories that fall within this element of EDB Postgres AI. -- Extensions sit alongside existing applications like Postgres Enterprise Manager, Barman, and Query Advisor as tools that allow you to leverage Postgres's capabilities. -- Also within this element are EDB's Migration tools, Migration Toolkit and Migration Portal. The Migration Portal is among the first EDB tools to include embedded AI with an AI copilot that can assist users in developing migration strategies. +- Postgres extensions are a source of its power and popularity, and are one of the categories that fall within this element of EDB Postgres AI. +- Extensions sit alongside existing applications like Postgres Enterprise Manager, Barman, and Query Advisor as tools that allow you to leverage Postgres's capabilities. +- Also within this element are EDB's Migration tools, Migration Toolkit and Migration Portal. The Migration Portal is among the first EDB tools to include embedded AI with an AI copilot that can assist users in developing migration strategies. diff --git a/product_docs/docs/epas/12/epas_rel_notes/epas12_21_26_rel_notes.mdx b/product_docs/docs/epas/12/epas_rel_notes/epas12_21_26_rel_notes.mdx new file mode 100644 index 00000000000..c5dbe4a4f3d --- /dev/null +++ b/product_docs/docs/epas/12/epas_rel_notes/epas12_21_26_rel_notes.mdx @@ -0,0 +1,16 @@ +--- +title: EDB Postgres Advanced Server 12.21.26 release notes +navTitle: "Version 12.21.26" +--- + +Released: 14 Nov 2024 + +EDB Postgres Advanced Server 12.21.26 includes the following enhancements and bug fixes: + +| Type | Description | Addresses                | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Upstream merge | Merged with community PostgreSQL 12.21. See the [PostgreSQL 12.21 Release Notes](https://www.postgresql.org/docs/release/12.21/) for more information. | | +| Bug fix | Fixed an issue for Auditing. With `edb_audit`, now you can audit the initial connection process or authentication messages as well. | #39540 | +| Bug fix | Fixed an issue for EDB*Loader. Now the `negative bitmapset member not allowed` error is resolved for partitioned tables. | #39562 | +| Bug fix | Fixed an issue for `Oracle Proc*c`and `ecpg with PROC` . Corrected the macro definition in `sqlda-proc.h` to fix the compilation errors when used. | #40573 | +| Bug fix | Fixed an issue for replication. Now the login of locked account on the physical replica is not allowed. | | diff --git a/product_docs/docs/epas/13/epas_rel_notes/epas13_17_23_rel_notes.mdx b/product_docs/docs/epas/13/epas_rel_notes/epas13_17_23_rel_notes.mdx new file mode 100644 index 00000000000..2a52cab874c --- /dev/null +++ b/product_docs/docs/epas/13/epas_rel_notes/epas13_17_23_rel_notes.mdx @@ -0,0 +1,16 @@ +--- +title: EDB Postgres Advanced Server 13.17.23 release notes +navTitle: "Version 13.17.23" +--- + +Released: 14 Nov 2024 + +EDB Postgres Advanced Server 13.17.23 includes the following enhancements and bug fixes: + +| Type | Description | Addresses                | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Upstream merge | Merged with community PostgreSQL 13.17. See the [PostgreSQL 13.17 Release Notes](https://www.postgresql.org/docs/release/13.17/) for more information. | | +| Bug fix | Fixed an issue for Auditing. With `edb_audit`, now you can audit the initial connection process or authentication messages as well. | #39540 | +| Bug fix | Fixed an issue for EDB*Loader. Now the `negative bitmapset member not allowed` error is resolved for partitioned tables. | #39562 | +| Bug fix | Fixed an issue for `Oracle Proc*c`and `ecpg with PROC` . Corrected the macro definition in `sqlda-proc.h` to fix the compilation errors when used. | #40573 | +| Bug fix | Fixed an issue for replication. Now the login of locked account on the physical replica is not allowed. | | diff --git a/product_docs/docs/epas/14/epas_rel_notes/epas14_14_0_rel_notes.mdx b/product_docs/docs/epas/14/epas_rel_notes/epas14_14_0_rel_notes.mdx new file mode 100644 index 00000000000..51db778c2cb --- /dev/null +++ b/product_docs/docs/epas/14/epas_rel_notes/epas14_14_0_rel_notes.mdx @@ -0,0 +1,16 @@ +--- +title: EDB Postgres Advanced Server 14.14.0 release notes +navTitle: "Version 14.14.0 " +--- + +Released: 14 Nov 2024 + +EDB Postgres Advanced Server 14.14.0 includes the following enhancements and bug fixes: + +| Type | Description | Addresses                | +|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Upstream merge | Merged with community PostgreSQL 14.14. See the [PostgreSQL 14.14 Release Notes](https://www.postgresql.org/docs/release/14.14/) for more information. | | +| Bug fix | Fixed an issue for Auditing. With `edb_audit`, now you can audit the initial connection process or authentication messages as well. | #39540 | +| Bug fix | Fixed an issue for EDB*Loader. Now the `negative bitmapset member not allowed` error is resolved for partitioned tables. | #39562 | +| Bug fix | Fixed an issue for `Oracle Proc*c`and `ecpg with PROC` . Corrected the macro definition in `sqlda-proc.h` to fix the compilation errors when used. | #40573 | +| Bug fix | Fixed an issue for replication. Now the login of locked account on the physical replica is not allowed. | | diff --git a/product_docs/docs/epas/15/epas_rel_notes/epas15_9_0_rel_notes.mdx b/product_docs/docs/epas/15/epas_rel_notes/epas15_9_0_rel_notes.mdx new file mode 100644 index 00000000000..d0648a1e04d --- /dev/null +++ b/product_docs/docs/epas/15/epas_rel_notes/epas15_9_0_rel_notes.mdx @@ -0,0 +1,18 @@ +--- +title: EDB Postgres Advanced Server 15.9.0 release notes +navTitle: "Version 15.9.0 " +--- + +Released: 14 Nov 2024 + +EDB Postgres Advanced Server 15.9.0 includes the following enhancements and bug fixes: + +| Type | Description | Addresses                | +|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Upstream merge | Merged with community PostgreSQL 15.9. See the [PostgreSQL 15.9 Release Notes](https://www.postgresql.org/docs/release/15.9/) for more information. | | +| Bug fix | Fixed an issue for Auditing. With `edb_audit`, now you can audit the initial connection process or authentication messages as well. | #39540 | +| Bug fix | Fixed an issue for `EDB*Loader`. Now the `negative bitmapset member not allowed` error is resolved for partitioned tables. | #39562 | +| Bug fix | Fixed an issue for `Oracle Proc*c`and `ecpg with PROC` . Corrected the macro definition in `sqlda-proc.h` to fix the compilation errors when used. | #40573 | +| Bug fix | Fixed an issue for replication. Now the login of locked account on the physical replica is not allowed. | | +| Bug fix | Fixed an issue for `COPY` and `EDB*Loader`. Now the server is not crashed while using dynamic partitioning in `COPY` and `EDB*Loader`. | #38963 | +| Bug fix | Fixed an issue with tab completion for the object names while using in SQL statements. | | diff --git a/product_docs/docs/epas/16/epas_rel_notes/epas16_5_0_rel_notes.mdx b/product_docs/docs/epas/16/epas_rel_notes/epas16_5_0_rel_notes.mdx new file mode 100644 index 00000000000..6d75f920565 --- /dev/null +++ b/product_docs/docs/epas/16/epas_rel_notes/epas16_5_0_rel_notes.mdx @@ -0,0 +1,19 @@ +--- +title: EDB Postgres Advanced Server 16.5.0 release notes +navTitle: "Version 16.5.0 " +--- + +Released: 14 Nov 2024 + +EDB Postgres Advanced Server 16.5.0 includes the following enhancements and bug fixes: + +| Type | Description | Addresses                | +|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Upstream merge | Merged with community PostgreSQL 16.5. See the [PostgreSQL 16.5 Release Notes](https://www.postgresql.org/docs/release/16.5/) for more information. | | +| Bug fix | Fixed an issue for Auditing. With `edb_audit`, now you can audit the initial connection process or authentication messages as well. | #39540 | +| Bug fix | Fixed an issue for `EDB*Loader`. Now the `negative bitmapset member not allowed` error is resolved for partitioned tables. | #39562 | +| Bug fix | Fixed an issue for `Oracle Proc*c`and `ecpg with PROC` . Corrected the macro definition in `sqlda-proc.h` to fix the compilation errors when used. | #40573 | +| Bug fix | Fixed an issue for replication. Now the login of locked account on the physical replica is not allowed. | | +| Bug fix | Fixed an issue for `COPY` and `EDB*Loader`. Now the server is not crashed while using dynamic partitioning in `COPY` and `EDB*Loader`. | #38963 | +| Bug fix | Fixed an issue with tab completion for the object names while using in SQL statements. | | +| Bug fix | Fixed an issue with `ecpg`. Now it supports `EXEC SQL INCLUDE` in Pro*C (`-C PROC`) mode. | #41438 | \ No newline at end of file diff --git a/product_docs/docs/pgd/5.6/rel_notes/index.mdx b/product_docs/docs/pgd/5.6/rel_notes/index.mdx index b2e64835755..e9940e7e004 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -7,7 +7,6 @@ navigation: - pgd_5.6.0_rel_notes --- - The EDB Postgres Distributed documentation describes the latest version of EDB Postgres Distributed 5, including minor releases and patches. The release notes provide information on what was new in each release. For new functionality introduced in a minor or patch release, the content also indicates the release that introduced the feature. @@ -15,3 +14,4 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P |---|---|---|---|---| | 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | | 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | + diff --git a/src/pages/index.js b/src/pages/index.js index 3195d64c595..d69466d0a4e 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -311,17 +311,17 @@ const Page = () => { - - Overview of aidb + + AI Accelerator Overview - - Install the Tech Preview + + About Pipelines - - Use the Tech Preview + + Get Started with Pipelines diff --git a/tools/automation/generators/relgen/relgen.js b/tools/automation/generators/relgen/relgen.js index b31e8e0648f..9116f3fabbc 100755 --- a/tools/automation/generators/relgen/relgen.js +++ b/tools/automation/generators/relgen/relgen.js @@ -186,6 +186,7 @@ appendFileSync(relindexfilename, "---\n"); appendFileSync(relindexfilename, `title: ${meta.title}\n`); appendFileSync(relindexfilename, `navTitle: Release notes\n`); appendFileSync(relindexfilename, `description: ${meta.description}\n`); +appendFileSync(relindexfilename, `indexCards: none\n`); appendFileSync(relindexfilename, `navigation:\n`); for (let [file, relnote] of relnotes) { @@ -344,6 +345,7 @@ function prepareRelnote(meta, file, note) { ); appendFileSync(rlout, `navTitle: Version ${note.version}\n`); appendFileSync(rlout, `---\n`); + appendFileSync(rlout, "\n"); appendFileSync(rlout, `Released: ${note.date}\n`); appendFileSync(rlout, "\n"); @@ -389,6 +391,7 @@ function prepareRelnote(meta, file, note) { composednote = linenote.relnote; } else { const predetails = linenote.details; // Preprocess here + const compactdetailshtml = converter(predetails); const preheading = linenote.relnote; // Preprocess here const headinghtml = converter(preheading)