External model connections
==========================

外部モデルは、Postgresインスタンスの外部でホストされるAPIベースのモデルです。
AIDBは、\ ``aidb.create_model()``
にモデルを登録し、プロバイダー名、構成オブジェクト、およびAPIキーなどの資格情報を必要に応じて提供することにより、それらに接続します。

登録されると、外部モデルはビルトインローカルモデルとまったく同様に、AIDB
SQLファンクションまたはパイプラインステップで名前によって使用されます。

OpenAI互換エンドポイント
------------------------

AIDBは、OpenAI
APIを実装する埋め込みまたはチャット/補完サービスをサポートしています。これには、OpenAI自分自身、
`Ollama <https://ollama.com>`_ のようなセルフホストサーバー、およびその他の準拠エンドポイントが含まれます。

エンベディング
^^^^^^^^^^^^^^

``aidb.embeddings_config()`` とともに\ ``openai_embeddings``
プロバイダーを使用します。 ``url``
パラメーターをオーバーライドして、要求をOpenAI互換サーバーにリダイレクトします。

.. code:: sql

   - - OpenAI
   SELECT aidb.create_model(
       my_openai_embedder,
       openai_embeddings,
       config => aidb.embeddings_config(
           model   => text-embedding-3-small,
           api_key => sk-...,
           url     => https://api.openai.com/v1
       )
   );

   - - Local Ollama server
   SELECT aidb.create_model(
       my_ollama_embedder,
       openai_embeddings,
       config => aidb.embeddings_config(
           model => llama3.2,
           url   => http://llama.local:11434/v1/embeddings
       )
   );

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,APIが想定するモデル識別子。
  `api_key`,TEXT,NULL,認証用のAPIキー。
  `url`,TEXT,NULL,APIエンドポイントURL。デフォルトではOpenAIのエンドポイントです。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報 `user:password` 。
  `max_concurrent_requests`,INTEGER,NULL,エンドポイントへの最大同時要求。
  `max_batch_size`,INTEGER,NULL,バッチ要求ごとの入力の最大数。
  `input_type`,TEXT,NULL,エンコードの入力タイプヒントプロバイダー固有。
  `input_type_query`,TEXT,NULL,クエリエンコーディングの入力タイプヒントプロバイダー固有。
  `is_hcp_model`,BOOLEAN,NULL,HCPで実行されているモデルを参照する場合、`true`に設定します。

チャット完了
^^^^^^^^^^^^

``aidb.completions_config()`` とともに\ ``openai_completions``
プロバイダーを使用します。 ``url``
パラメーターは同じように機能します。OpenAIの場合は省略するか、他の準拠サーバーの場合はオーバーライドします。

.. code:: sql

   SELECT aidb.create_model(
       my_openai_llm,
       openai_completions,
       config => aidb.completions_config(
           model       => gpt-4o,
           api_key     => sk-...,
           temperature => 0.2
       )
   );

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子。
  `api_key`,TEXT,NULL,認証用のAPIキー。
  `url`,TEXT,NULL,APIエンドポイントURL。デフォルトではOpenAIのエンドポイントです。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報 `user:password` 。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `seed`,BIGINT,NULL,再現可能な出力のランダムシード。
  `system_prompt`,TEXT,NULL,すべての要求の前に追加されるデフォルトのシステムプロンプト。
  `max_tokens`,JSONB,NULL,最大トークン構成`aidb.max_tokens_config()`から。
  `thinking`,BOOLEAN,NULL,拡張推論を有効にしますサポートされているモデルのみ。
  `max_concurrent_requests`,INTEGER,NULL,エンドポイントへの最大同時要求。
  `extra_args`,JSONB,NULL,追加のプロバイダー固有の引数。
  `is_hcp_model`,BOOLEAN,NULL,HCPで実行されているモデルを参照する場合、`true`に設定します。

!!!注 pgvectorインデックスを使用する場合、 
`pgvector limits indexed vectors to 2000 dimensions <https://github.com/pgvector/pgvector?tab=readme-ov-file#what-if-i-want-to-index-vectors-with-more-than-2000-dimensions>`_ 
に注意してください。選択したモデルがより多くのディメンションを生成する場合、パイプラインステップで\ ``aidb.vector_index_disabled_config()``
を使用し、インデックスを手動で管理します。

NVIDIA NIM
----------

AIDBは、 `build.nvidia.com <https://build.nvidia.com>`_ でホストされるNVIDIA
NIMマイクロサービスと、独自の環境で実行されているNIMインスタンスをサポートしています。

テキスト生成NIM補完
^^^^^^^^^^^^^^^^^^^

モデル識別子とNIM APIキーで\ ``nim_completions``
プロバイダーを使用します。

.. code:: sql

   SELECT aidb.create_model(
       my_nim_llm,
       nim_completions,
       {"model": "meta/llama-3.3-70b-instruct"}::JSONB,
       {"api_key": "<NIM API KEY>"}::JSONB
   );

独自の環境で実行されているNIMインスタンスを使用するには、NIMエンドポイントを指す構成に\ ``url``
キーを追加します。

登録後、\ ``aidb.decode_text()`` でモデルを実行します。

.. code:: sql

   SELECT aidb.decode_text(my_nim_llm, Tell me a short, one sentence story);

   __OUTPUT__
                                         decode_text
   - ---------------------------------------------------------------------------------
    As the clock struck midnight, a single tear fell from the porcelain dolls eye.
   (1 row)

マルチモーダルエンベディングNIM CLIP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

共同テキストと画像の埋め込みには、 ``aidb.nim_clip_config()``
とともに\ ``nim_clip`` プロバイダーを使用します。

.. code:: sql

   SELECT aidb.create_model(
       my_nim_clip,
       nim_clip,
       config => aidb.nim_clip_config(
           api_key => nvapi-...,
           model   => nvidia/nvclip
       )
   );

``aidb.nim_clip_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM認証用のAPIキー。
  `model`,TEXT,NULL,NIM CLIPモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,モデルがHCPで実行されている場合、`true`に設定します。

OCR NIM OCR
^^^^^^^^^^^

``nim_ocr`` プロバイダーを\ ``aidb.nim_ocr_config()``
とともに使用して、画像からテキストを抽出します。

.. code:: sql

   SELECT aidb.create_model(
       my_nim_ocr,
       nim_paddle_ocr.,
       config => aidb.nim_ocr_config(api_key => nvapi-...)
   );

``aidb.nim_ocr_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM認証用のAPIキー。
  `model`,TEXT,NULL,NIM OCRモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,モデルがHCPで実行されている場合、`true`に設定します。

リランキングNIMリランキング
^^^^^^^^^^^^^^^^^^^^^^^^^^^

``nim_reranking`` プロバイダーを\ ``aidb.nim_reranking_config()``
とともに使用して、関連性によって検索結果を再スコアします。
``aidb.rerank_text()`` での使用については、
:ref:`Text reranking <Text reranking>` を参照してください。

.. code:: sql

   SELECT aidb.create_model(
       my_reranker,
       nim_reranking,
       config => aidb.nim_reranking_config(
           api_key => nvapi-...,
           model   => nvidia/nv-rerankqa-mistral-4b-v3
       )
   );

``aidb.nim_reranking_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM認証用のAPIキー。
  `model`,TEXT,NULL,NIMリランキングモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,モデルがHCPで実行されている場合、`true`に設定します。

NIM APIキーを取得するには、
`build.nvidia.com <https://build.nvidia.com>`_ でアカウントを作成し、モデルを選択して、モデルのページからキーを生成します。

Google Gemini
-------------

``aidb.gemini_config()`` とともに\ ``gemini`` プロバイダーを使用します。
Google APIキーを最初の引数として渡します。

.. code:: sql

   SELECT aidb.create_model(
       my_gemini,
       gemini,
       config => aidb.gemini_config(
           AIza...,
           model => gemini-2.0-flash
       )
   );

``aidb.gemini_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,Required,Google APIキー。
  `model`,TEXT,NULL,Geminiモデル識別子たとえば `gemini-2.0-flash` 。
  `url`,TEXT,NULL,APIエンドポイントURLオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,APIへの最大同時要求。
  `thinking_budget`,INTEGER,NULL,拡張思考トークンの予算Gemini 2.xモデルのみ。

OpenRouter
----------

`OpenRouter <https://openrouter.ai>`_ は、複数のプロバイダーの200以上のモデルに統合APIゲートウェイを提供します。
AIDBは、OpenRouterを介したチャット補完と埋め込みの両方をサポートしています。

.. _チャット完了-1:

チャット完了
^^^^^^^^^^^^

.. code:: sql

   SELECT aidb.create_model(
       my_or_chat,
       openrouter_chat,
       config => aidb.openrouter_chat_config(
           anthropic/claude-3-5-haiku,
           api_key => sk-or-...
       )
   );

``aidb.openrouter_chat_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,OpenRouterモデル識別子。
  `api_key`,TEXT,NULL,OpenRouter APIキー。
  `url`,TEXT,NULL,APIエンドポイントURLオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `max_tokens`,JSONB,NULL,最大トークン構成`aidb.max_tokens_config()`から。

.. _エンベディング-1:

エンベディング
^^^^^^^^^^^^^^

.. code:: sql

   SELECT aidb.create_model(
       my_or_embedder,
       openrouter_embeddings,
       config => aidb.openrouter_embeddings_config(
           mistral/mistral-embed,
           api_key => sk-or-...
       )
   );

``aidb.openrouter_embeddings_config()`` パラメーター

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,OpenRouterエンベディングモデル識別子。
  `api_key`,TEXT,NULL,OpenRouter APIキー。
  `url`,TEXT,NULL,APIエンドポイントURLオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `max_batch_size`,INTEGER,NULL,バッチ要求ごとの最大入力。

すべての構成ヘルパー機能の完全なパラメーターの詳細については、
:ref:`Pipelines API reference <Pipelines API reference>` を参照してください。
