前置き
現在、OCIのGenerativeAI(以下GenAI)を用いたシステム開発を行っております。
その中でそんなの知らんがなとか思った実績を共有するべく、発信します。
経緯
ここまで、OCIで開発を行うのにあたって、データベースをBaseDBで実施しておりました。
しかし、今後、製品化に向かうのにあたり自動でメンテナンスを行ってくれるという点に惹かれて、AutonomousDBで作り直すことにしました。
BaseDBはテクニカルにカスタマイズが可能なDB、AutonomousDBはOracleが管理してくれるオートマチックなDBと捉えていただけると分かりやすいかと思います。
今後、稼働する顧客が増えることを想定すると、オートマチックに管理運用していく必要があると考え、DBの切替を決意しました。
起こったこと
さて、そんなこんなで元々OracleAPEX(ローコードツール)で画面は作っていたので、サクッとエクスポートした資産をインストールして画面を実装し、動作させてみたところ、何やらエラーが発生しました。
それがこちら。
Add error onto error stack: ORA-20000: Oracle Textエラー:
DRG-50857: oracle error in dbms_vector_chain.utl_to_chunks
ORA-20003: invalid value for OVERLAP parameter
ん?
chunk_params CLOB := '{"max": "250", "overlap": "10%", "language": "JAPANESE", "normalize": "all"}';
多分、このチャンクのパラメータのことを言っているのですが、マニュアルを追ってみても、他のサイトを見ても記載感が同じで原因不明。
chunk_params CLOB := '{"max": "250", "overlap": "10", "language": "JAPANESE", "normalize": "all"}';
overlapに関するエラー内容の為、試しに上記のようにすると、
ORA-20000: Oracle Textエラー: DRG-50857: oracle error in dbms_vector_chain.utl_to_chunks ORA-30585: テキスト・チャンク化のOVERLAPが無効です - '10'
うーん
パラメータがDBによって異なるなんて書いてないのであえなく、詳しい人に相談。
すると、このoverlap、なんと整数として記載する場合は、左のmaxに対してのパーセンテージ数として書く必要があるらしく、それで直った例があるとのこと。
つまり、
chunk_params CLOB := '{"max": "250", "overlap": "25", "language": "JAPANESE", "normalize": "all"}';
こういうことですね。
試しに修正したところ、無事に処理が実行できました。
いや分からんwwww
BaseDBでは、もとのパラメータで出来ていたのも相まって謎すぎますね。
同様に躓いた人がいたら試してみてください!
##終わりに
現在、2025年4月の製品化に向けて開発を進めております。
是非、興味がありましたらご連絡ください!