Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Update the OCI tutorilas:ae7491c29a709fcd8847475b610e8d3c88838374 #501

Merged
merged 1 commit into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions tutorials/_ai-vector-search/ai-vector101-always-free-adb.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,17 @@ Always FreeのADBでは、2024年5月にリリースとなった**Oracle Databas
# 1. リージョンの確認

Always Free Autonomous Database上でのOracle Database 23aiは、
<br>現時点では、以下の4リージョンのみでご利用いただけます:
- Tokyo
- Ashburn
- Phoenix
- Paris
- London

<br>2025/01時点では、以下のリージョンでご利用いただけます:
- フェニックス(PHX)
- アッシュバーン(IAD)
- ロンドン(LHR)
- パリ(CDG)
- シドニー(SYD)
- ムンバイ(BOM)
- シンガポール(SIN)
- 東京(NRT)

最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/autonomous-database-serverless/doc/autonomous-always-free.html#:~:text=Oracle%20Database%2023ai%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9FAlways%20Free%20Autonomous%20Database%E3%81%AE%E3%83%8E%E3%83%BC%E3%83%88%3A){:target="_blank"}をご参照ください。
お使いのテナンシーの**ホーム・リージョン**が上記のリージョンのいずれか、
<br>かつ、**ホーム・リージョン**でADBのインスタンスを作成する必要があります。

Expand Down
26 changes: 20 additions & 6 deletions tutorials/_ai-vector-search/ai-vector104-file-to-embedding.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,19 @@ header:

※インスタンス作成方法については。[101 : Always Freeで23aiのADBインスタンスを作成してみよう](https://oracle-japan.github.io/ocitutorials/ai-vector-search/ai-vector101-always-free-adb/)をご参照ください。

- OCI GenAIのサービスをご利用いただけるChicagoのRegionはサブスクリプション済みであること。
- AI Vector Searchの基本的な操作を学習済みであること
<br>[103 : Oracle AI Vector Searchの基本操作を試してみよう](/ocitutorials/ai-vector-search/ai-vector103-basics/)を参照ください。

- OCI GenAI Serviceをご利用いただけるリージョンはサブスクリプション済みであること。

※2025/01時点で、利用可能なリージョンは以下です。
- サンパウロ(GRU)
- フランクフルト(FRA)
- 大阪(KIX)
- ロンドン(LHR)
- シカゴ(ORD)

最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。本チュートリアルで使用するテキスト生成モデル、エンベッディングモデルについては、将来的にモデルの廃止が行われることがあるため、廃止日や置換モデルのリリース情報を[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/deprecating.htm){:target="_blank"}から確認のうえ、最新のモデルを使用することを推奨します。以降のチュートリアルでは、エンベッディングモデルにcohere.embed-multilingual-v3.0、テキスト生成モデルにcohere.command-r-plus-08-2024を使用します。これらが最新になっているか上記リンクよりご確認ください。また大阪リージョンの利用が前提となっているため、それ以外のリージョンの場合は適宜サービス・エンドポイントを修正してください。

<br>

Expand Down Expand Up @@ -362,11 +374,13 @@ SQL*Plusの出力をよりわかりやすいように、SQL*Plusの環境設定
PL/SQLプロシージャが正常に完了しました。
```

OCI GenAIサービスを利用するためのパラメータを設定します。
OCI GenAIサービスを利用するためのパラメータを設定します。今回はOCI Generative AI Serviceのembed-multilingual-v3.0というモデルを利用します。

※urlには大阪リージョンのエンドポイントを指定していますが、サブスクライブしているリージョンによってここからの手順では適宜修正してください。最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。例えばロンドンの場合は、urlには*https://inference.generativeai.uk-london-1.oci.oraclecloud.com*と指定します。

```sql
var embed_genai_params clob;
exec :embed_genai_params := '{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}';
exec :embed_genai_params := '{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}';
```

上記の設定を検証してみます。
Expand Down Expand Up @@ -425,7 +439,7 @@ OCI GenAIサービスを利用するためのパラメータを設定します
documentation_tab dt,
dbms_vector_chain.utl_to_embeddings(
dbms_vector_chain.utl_to_chunks(dbms_vector_chain.utl_to_text(dt.data), json('{"max": "400", "overlap": "20", "language": "JAPANESE", "normalize": "all"}')),
json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
) t,
JSON_TABLE(
t.column_value,
Expand Down Expand Up @@ -736,7 +750,7 @@ object_uriには前に手順でメモをしたURIパスを入力します。
documentation_tab dt,
dbms_vector_chain.utl_to_embeddings(
dbms_vector_chain.utl_to_chunks(dbms_vector_chain.utl_to_text(dt.data), json('{"max": "400", "overlap": "20", "language": "JAPANESE", "normalize": "all"}')),
json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
) t,
JSON_TABLE(
t.column_value,
Expand Down Expand Up @@ -768,7 +782,7 @@ object_uriには前に手順でメモをしたURIパスを入力します。
FROM doc_chunks
ORDER BY vector_distance(embed_vector , (SELECT to_vector(et.embed_vector) embed_vector
FROM
dbms_vector_chain.utl_to_embeddings('コーポレート・ガバナンスに関する基本的な考え方', JSON('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')) t,
dbms_vector_chain.utl_to_embeddings('コーポレート・ガバナンスに関する基本的な考え方', JSON('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')) t,
JSON_TABLE (t.column_value, '$[*]'
COLUMNS (
embed_id NUMBER PATH '$.embed_id',
Expand Down
38 changes: 26 additions & 12 deletions tutorials/_ai-vector-search/ai-vector105-multi-vector-search.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,30 @@ header:

**前提条件 :**

* Oracle Database 23ai Freeをインストールする済みであること
<br>※インストール方法については、[102 : 仮想マシンへOracle Database 23ai Freeをインストールしてみよう](/ocitutorials/ai-vector-search/ai-vector102-23aifree-install){:target="_blank"} を参照ください。

* AI Vector Searchの基本的な操作を学習済みであること
<br>[103 ~](/ocitutorials/ai-vector-search/ai-vector103-basics/){:target="_blank"}を参照ください。

* OCI Generative AI Serviceを使用できること
- OCI GenAI Serviceをご利用いただけるChicago Regionはサブスクリプション済みであること。

- OCI アカウントのAPI署名キーの生成は完了であること
- 使用するOracle Databaseの環境があること
- 23ai freeで実行する場合、Oracle Database 23ai Freeをインストールする済みであること

※インストール方法については、[102 : 仮想マシンへOracle Database 23ai Freeをインストールしてみよう](https://oracle-japan.github.io/ocitutorials/ai-vector-search/ai-vector102-23aifree-install/) を参照ください。

- ADB23aiで実行する場合、Autonomous Database 23aiのインスタンスを構築済みであること。本記事では無償で使えるAlways Freeを使います。

※インスタンス作成方法については。[101 : Always Freeで23aiのADBインスタンスを作成してみよう](https://oracle-japan.github.io/ocitutorials/ai-vector-search/ai-vector101-always-free-adb/)をご参照ください。

- AI Vector Searchの基本的な操作を学習済みであること
<br>[103 : Oracle AI Vector Searchの基本操作を試してみよう](/ocitutorials/ai-vector-search/ai-vector103-basics/)を参照ください。

- OCI GenAI Serviceをご利用いただけるリージョンはサブスクリプション済みであること。

※2025/01時点で、利用可能なリージョンは以下です。
- サンパウロ(GRU)
- フランクフルト(FRA)
- 大阪(KIX)
- ロンドン(LHR)
- シカゴ(ORD)

最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。本チュートリアルで使用するテキスト生成モデル、エンベッディングモデルについては、将来的にモデルの廃止が行われることがあるため、廃止日や置換モデルのリリース情報を[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/deprecating.htm){:target="_blank"}から確認のうえ、最新のモデルを使用することを推奨します。以降のチュートリアルでは、エンベッディングモデルにcohere.embed-multilingual-v3.0、テキスト生成モデルにcohere.command-r-plus-08-2024を使用します。これらが最新になっているか上記リンクよりご確認ください。また大阪リージョンの利用が前提となっているため、それ以外のリージョンの場合は適宜サービス・エンドポイントを修正してください。

- OCI アカウントのAPI署名キーの生成は完了であること
<br>以下の情報を取得してください。必要があれば、[API署名キーの生成方法](https://docs.oracle.com/ja-jp/iaas/Content/API/Concepts/apisigningkey.htm#two){:target="_blank"}をご参照ください。
- `user` - キー・ペアが追加されるユーザーのOCID。
- `fingerprint` - 追加されたキーのフィンガープリント。
Expand Down Expand Up @@ -255,7 +269,7 @@ from
json('{"max": "35", "overlap": "0", "language": "JAPANESE", "normalize": "all"}')) t, JSON_TABLE(t.column_value, '$[*]' COLUMNS (chunk_id NUMBER PATH '$.chunk_id', chunk_data VARCHAR2(4000) PATH '$.chunk_data')) et;

UPDATE doc_chunks
SET embed_vector = dbms_vector_chain.utl_to_embedding(embed_data, json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
SET embed_vector = dbms_vector_chain.utl_to_embedding(embed_data, json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')
);

COMMIT;
Expand All @@ -266,7 +280,7 @@ COMMIT;
```sql
INSERT INTO doc_queries (query, embedding)
select et.embed_data query, to_vector(et.embed_vector) embedding
from dbms_vector_chain.utl_to_embeddings('彼は新しいプロジェクトの提案で成功を収めました。', json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')) t, JSON_TABLE(t.column_value, '$[*]' COLUMNS (embed_data VARCHAR2(4000) PATH '$.embed_data', embed_vector CLOB PATH '$.embed_vector')) et;
from dbms_vector_chain.utl_to_embeddings('彼は新しいプロジェクトの提案で成功を収めました。', json('{"provider": "ocigenai", "credential_name": "OCI_CRED", "url": "https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com/20231130/actions/embedText", "model": "cohere.embed-multilingual-v3.0"}')) t, JSON_TABLE(t.column_value, '$[*]' COLUMNS (embed_data VARCHAR2(4000) PATH '$.embed_data', embed_vector CLOB PATH '$.embed_vector')) et;

COMMIT;
```
Expand Down
31 changes: 22 additions & 9 deletions tutorials/_ai-vector-search/ai-vector106-23ai-langchain-rag.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,21 @@ header:

構成に利用するサービスは以下の通りです。

- テキスト生成モデル:OCI Generative AI(Command R Plus)
- ドキュメントデータのベクトル化に利用するモデル : Oracle Cloud Generative AI Service(embed-multilingual-v3.0)
- テキスト生成モデル:OCI Generative AI(cohere.command-r-plus-08-2024)

※2025/01時点で、利用可能なリージョンは以下です。
- サンパウロ(GRU)
- フランクフルト(FRA)
- 大阪(KIX)
- ロンドン(LHR)
- シカゴ(ORD)

最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。
- ドキュメントデータのベクトル化に利用するモデル : Oracle Cloud Generative AI Service(cohere.embed-multilingual-v3.0)
- ベクトルデータベース: Oracle Database 23ai Free(OCI Computeにインストール)、Base Database Service、Autonomous Database(Always Free)

本チュートリアルで使用するテキスト生成モデル、エンベッディングモデルについては、将来的にモデルの廃止が行われることがあるため、廃止日や置換モデルのリリース情報を[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/deprecating.htm){:target="_blank"}から確認のうえ、最新のモデルを使用することを推奨します。本チュートリアルでは、エンベッディングモデルにcohere.embed-multilingual-v3.0、テキスト生成モデルにcohere.command-r-plus-08-2024を使用します。これらが最新になっているか上記リンクよりご確認ください。

※LangChainって何?という方は[こちらの記事](https://qiita.com/ksonoda/items/ba6d7b913fc744db3d79#langchain) をご参照ください。

また、本チュートリアルではAI Vector Searchの以下のチュートリアルを実施済みであることが前提となっています。
Expand Down Expand Up @@ -385,10 +396,12 @@ from langchain_community.embeddings import OCIGenAIEmbeddings

利用する埋め込みモデルを定義します。今回はOCI Generative AI Serviceのembed-multilingual-v3.0というモデルを利用します。

※service_endpointには大阪リージョンのエンドポイントを指定していますが、サブスクライブしているリージョンによって適宜修正してください。最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。例えばロンドンの場合は、service_endpointには*https://inference.generativeai.uk-london-1.oci.oraclecloud.com*と指定します。

```python
embeddings = OCIGenAIEmbeddings(
model_id="cohere.embed-multilingual-v3.0",
service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
service_endpoint="https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com",
# compartment_idはご自身が利用されているコンパートメントのOCIDを指定してください
compartment_id="ocid1.compartment.oc1..aaaaaaaxxxxxxx",
)
Expand Down Expand Up @@ -664,15 +677,15 @@ template = """contextに従って回答してください:
prompt = ChatPromptTemplate.from_template(template)
```

次にテキスト生成モデルを指定します。まずはGenerative AI Serviceの command-r-plusです
次にテキスト生成モデルを指定します。まずはGenerative AI Serviceのcommand-r-plus-08-2024です

```python
from langchain_community.chat_models.oci_generative_ai import ChatOCIGenAI

llm = ChatOCIGenAI(
# model_id="cohere.command-r-16k",
model_id="cohere.command-r-plus",
service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
# model_id="cohere.command-r-08-2024",
model_id="cohere.command-r-plus-08-2024",
service_endpoint="https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com",
compartment_id="ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxx",
model_kwargs={"temperature": 0.7, "max_tokens": 500},
)
Expand Down Expand Up @@ -744,7 +757,7 @@ OraBooster の製品は、オンラインや一部の小売店で購入するこ

## 番外編:RAGを実装する(Cohere社 Command-R-Plusのパターン)

その他のモデルとしてCohere社のCommand-R-Plusを使ったパターンです。llm定義の部分をcohereに挿げ替えるだけで、その他のコードは全く同じです。LangChainを使うメリットですね。
その他のモデルとしてCohere社のCommand-R-Plus-08-2024を使ったパターンです。llm定義の部分をcohereに挿げ替えるだけで、その他のコードは全く同じです。LangChainを使うメリットですね。

```python
from langchain.schema.output_parser import StrOutputParser
Expand All @@ -765,7 +778,7 @@ os.environ["COHERE_API_KEY"] = getpass.getpass("Cochere API Key:")

from langchain_cohere import ChatCohere

llm_cohere = ChatCohere(model="command-r-plus")
llm_cohere = ChatCohere(model="command-r-plus-08-2024")

ベクトル検索を実行するベクトルデータベースを定義します。もちろんここでは事前に定義したvector_store_dotを指定します。

Expand Down
10 changes: 6 additions & 4 deletions tutorials/_ai-vector-search/ai-vector107-rag-chat-history.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,16 @@ print(docs)

区切ったチャンクテキストを埋め込みモデル(OCI Generative AI Serviceのembed-multilingual-v3.0)でベクトルに変換し、ベクトル・データベースにロードします。

※service_endpointには大阪リージョンのエンドポイントを指定していますが、サブスクライブしているリージョンによって適宜修正してください。最新のリージョン一覧は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/pretrained-models.htm){:target="_blank"}をご参照ください。例えばロンドンの場合は、service_endpointには*https://inference.generativeai.uk-london-1.oci.oraclecloud.com*と指定します。

```python
from langchain_community.vectorstores.oraclevs import OracleVS
from langchain_community.vectorstores.utils import DistanceStrategy
from langchain_community.embeddings import OCIGenAIEmbeddings

embeddings = OCIGenAIEmbeddings(
model_id="cohere.embed-multilingual-v3.0",
service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
service_endpoint="https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com",
compartment_id="<compartmentのOCID>",
)

Expand Down Expand Up @@ -249,9 +251,9 @@ postgres=> select * from message_store;
from langchain_community.chat_models.oci_generative_ai import ChatOCIGenAI

llm = ChatOCIGenAI(
#model_id="cohere.command-r-16k",
model_id="cohere.command-r-plus",
service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
#model_id="cohere.command-r-08-2024",
model_id="cohere.command-r-plus-08-2024",
service_endpoint="https://inference.generativeai.ap-osaka-1.oci.oraclecloud.com",
compartment_id="<compartmentのOCID>",
model_kwargs={"temperature": 0.7, "max_tokens": 500},
)
Expand Down
Loading
Loading