AI inference functions
======================

AIDBは、クエリで直接AI推論を実行するためのSQLファンクションセットを提供します。これらの機能を使用すると、パイプラインを設定せずにデータをベクトル表現にエンコードし、言語モデルを使用してテキストを生成し、推論動作を制御できます。

quietb.encode_text()
--------------------

登録された埋め込みモデルを使用して、単一のテキスト文字列をベクトルにエンコードします。

.. code:: sql

   SELECT aidb.encode_text(model_name => my_embedder, input => What is pgvector?);

   __OUTPUT__
                            encode_text
   - -------------------------------------------------------------
    [0.021,-0.043,0.117, ...]
   (1 row)

完全なパラメーターのリファレンスについては、
:ref:`Models reference <Models reference>` を参照してください。

--------------

promoteb.encode_text_batch()
----------------------------

単一のバッチ要求で複数のテキスト文字列をベクターにエンコードします。多くの入力を処理する場合、ループで\ ``encode_text()``
を呼び出すよりも効率的です。

.. code:: sql

   SELECT * FROM aidb.encode_text_batch(
       model_name => my_model_name,
       input      => ARRAY[What is pgvector?, How does RAG work?, Explain embeddings.]
   );

   __OUTPUT__
     encode_text_batch
   - ------------------------
    [0.021,-0.043,0.117,...]
    [0.008, 0.091,-0.034,...]
    [0.055,-0.012, 0.076,...]
   (3 rows)

完全なパラメーターのリファレンスについては、
:ref:`Models reference <Models reference>` を参照してください。

--------------

quietb.encode_image()
---------------------

登録されたマルチモーダル埋め込みモデルCLIPモデルなどを使用して、単一の画像をベクトルにエンコードします。

.. code:: sql

   SELECT aidb.encode_image(
       model_name => my_model_name,
       input      => pg_read_binary_file(/path/to/image.png)::BYTEA
   );

   __OUTPUT__
                            encode_image
   - -------------------------------------------------------------
    [-0.012, 0.084, 0.031, ...]
   (1 row)

完全なパラメーターのリファレンスについては、
:ref:`Models reference <Models reference>` を参照してください。

--------------

quietb.generate_text()
----------------------

指定されたプロンプトに応じて言語モデルLLMからテキストを生成します。これは、AIDBのLLM推論のコア機能です。

.. code:: sql

   SELECT aidb.generate_text(
       model_name => my_model_name,
       input      => Explain what a knowledge base is in two sentences.
   );

   __OUTPUT__
                                            generate_text
   - -------------------------------------------------------------------------------------------
    A knowledge base is a structured repository of information used to answer queries or ...
   (1 row)

生成動作を制御するには、 ``aidb.inference_config()``
によってビルドされた\ ``inference_config``
オブジェクトを渡します。呼び出しが\ ``aidb.generate_text(TEXT, TEXT, json)``
署名と一致するように、JSONB結果を\ ``json`` にキャストします。

.. code:: sql

   SELECT aidb.generate_text(
       model_name       => my_model_name,
       input            => Summarize the following text: ...,
       inference_config => aidb.inference_config(
           system_prompt => You are a concise technical writer.,
           temperature   => 0.2,
           max_tokens    => 256
       )::json
   );

完全なパラメーターのリファレンスについては、
:ref:`Models reference <Models reference>` を参照してください。

--------------

quietb.generate_text_batch()
----------------------------

単一のバッチ要求で複数のプロンプトのテキスト応答を生成します。

.. code:: sql

   SELECT aidb.generate_text_batch(
       model_name => my_model_name,
       input  => ARRAY[
           What is a vector database?,
           What is retrieval-augmented generation?
       ]
   );

   __OUTPUT__
                              generate_text_batch
   - ---------------------------------------------------------
    A vector database stores high-dimensional vectors ...
    Retrieval-augmented generation (RAG) combines a ...
   (2 rows)

完全なパラメーターのリファレンスについては、
:ref:`Models reference <Models reference>` を参照してください。

--------------

quietb.inference_config()
-------------------------

推論構成オブジェクトをビルドして、言語モデル生成動作を制御します。結果を\ ``aidb.generate_text()``
または\ ``aidb.generate_text_batch()`` の\ ``inference_config``
引数として、またはパイプラインステップ内の\ ``aidb.summarize_text_config()``
の一部として渡します。

.. code:: sql

   SELECT aidb.generate_text(
       model_name       => my_llm,
       input            => Write a haiku about PostgreSQL.,
       inference_config => aidb.inference_config(
           temperature => 0.9,
           max_tokens  => 64,
           seed        => 42
       )::json
   );

完全なパラメーターのリファレンスについては、 :ref:`Models reference <Models reference>` 
を参照してください。

!!!note
これらのファンクションをパイプライン内のステップとして使用するには、
:ref:`Pipeline steps <Pipeline steps>` を参照してください。
