記事へ Seisuke Nakahashi · 2024年7月22日 上記(2)は、あくまでテキストベースで参照するための簡単なサンプルになります。そのため、グローバルの値が gval=$LB("abc","xyz") や gval="abc"_$C(1)_"xyz" など制御コードが含まるときは、ファイルにはそのまま出力されませんので、その点ご注意くださいませ。 「そのようなデータも見たいな」と言われる方は、コメントなどでお寄せください。
記事へ Seisuke Nakahashi · 2024年4月7日 @Minoru Horita さん、分かりやすいベクトル検索の紹介記事、ありがとうございます!具体的に、大量の日本語文章データをIRISに格納して、そこからIRISのSQL一発で 「意味が似ている」データをヒットさせるデモは、分かりやすくてワクワクしますね。 感想だけではなんなので、記事の一連のPythonコードを、以下のようなIRISクラスに置き換えてみました。(1) プロパティは、日本語文書 contents とそのベクトルデータ contentsv の2つ(2) sqlalchemy ではなく、IRIS上で INSERT文発行して、ベクトルデータを格納 全く同じロジックですが、Pythonコード含めて、少しでも他メンバーの方のご参考になればと掲載します。 Class User.nakav3 Extends %Persistent { Property contents As %String(MAXLEN = 4096); Property contentsv As %Vector(DATATYPE = "DOUBLE", LEN = 768); ClassMethod load() [ Language = python ] { import iris import pandas as pd from pyarrow.parquet import ParquetFile import pyarrow as pa pf = ParquetFile('/var/tmp/cc100/0000.parquet') first_rows = next(pf.iter_batches(batch_size = 1000)) df = pa.Table.from_batches([first_rows]).to_pandas() df = df.replace("\n","",regex=True) for index,row in df.iterrows(): text = row['text'] iris.cls('User.nakav3').insertToIRIS(text) print('Done') } ClassMethod search(question As %String) { if $g(question)="" set question="大都市での生活は便利な半面、混雑や環境の悪さなどの問題もある。" set questionv=$tr(..Embedd(question)," '[]") set sql="SELECT TOP 5 VECTOR_DOT_PRODUCT(contentsv, TO_VECTOR(?, DOUBLE, 768)) as sim, contents" set sql=sql_" FROM SQLUser.nakav3 ORDER BY sim DESC" set rs=##class(%SQL.Statement).%ExecDirect(.stmt,.sql,.questionv) while rs.%Next() { write rs.%Get("sim")," ",rs.%Get("contents"),! } } ClassMethod insertToIRIS(text As %String) { set textv=$tr(..Embedd(text)," '[]") &sql(insert into SQLUser.nakav3 (contents, contentsv) values (:text, TO_VECTOR(:textv, DOUBLE, 768) ) ) } ClassMethod Embedd(text) As %String [ Language = python ] { from sentence_transformers import SentenceTransformer model = SentenceTransformer('stsb-xlm-r-multilingual') embeddings = model.encode(text) # convert the embeddings to a string embeddings_list = [str(embedding.tolist()) for embedding in embeddings] return str(embeddings_list) } } データロードdo ##class(User.nakav3).load()データ検索do ##class(User.nakav3).search("大都市での生活は便利な半面、混雑や環境の悪さなどの問題もある。")
記事へ Seisuke Nakahashi · 2023年11月21日 当日パネルディスカッションの進行役をつとめさせていただきました。 パネラーのみなさんが嬉しそうに IRIS にまつわる技術論をお話される姿と、会場のみなさんがその話を真剣にうんうん頷いて聞かれている姿、両方が良く見えて、司会席でニヤニヤしぱなっしでした。とても楽しい一日でした。 会場にお越しいただいたみなさま、本当にありがとうございました。
記事へ Seisuke Nakahashi · 2023年10月3日 > VSCodeのワークスペースを作成・保存> この作業はUIで行っても良いのですが、ここの UI 作業については、以下の記事でスクリーンショット付きで公開しています。少し古いですが、2023年10月現在でも同じ手順で登録できます。「鉛筆マーク」 クリックで登録されます。https://jp.community.intersystems.com/node/493616→ 3. クラス定義やルーチンを編集する
記事へ Seisuke Nakahashi · 2023年8月23日 Hashimotoさん、Peacock知りませんでした。楽しい情報ありがとうございます。 ObjectScriptコード内の色は、”InterSystems Language Server" エクステンションのTheme内で登録されていますので、ここを上書きさせれば出来る「かも」です。最新 Version 2.3.6 であれば、C:\Users\<username>\.vscode\extensions\intersystems.language-server-2.3.6-win32-x64\themes ここのテーマ別 json ファイルの、このあたり以下にずらっとならんでいました。 中橋は、コマンドカラーを変更するまでの元気がなくて、へーと眺めている段階です・・・。
記事へ Seisuke Nakahashi · 2021年4月20日 Amano さん、 最近アップデートされた、InterSystems Server Manager エクステンションでは、簡単に「サーバ上のCSPファイル」を編集できるようになりました。以下に手順を投稿しましたので、もしご参考になれば幸いです。 VSCode を使ってみよう (2021年4月20日版)