Nouvelle publication

Rechercher

Résumé
· Mai 26, 2024

InterSystems 开发者中文版:每周摘要(2024年5月20日-26日)

五月 20 - 26, 2024Week at a GlanceInterSystems Developer Community
Article
· Mai 26, 2024 13m de lecture

IRIS BI開発者向けチュートリアルを試してみる(11)

はじめに

IRIS BIチュートリアル試してみたシリーズの11回目です。ついに今回が最終回になります。
最終回のトピックは「ピボット・テーブルおよびダッシュボードのエクスポートとパッケージ化」です。これまでに作成したピボットテーブルやダッシュボードをエクスポートして他の環境などに移送するためのテクニックを学びます。
では、早速はじめていきましょう。

ピボット・テーブルおよびダッシュボードのエクスポートとパッケージ化

フォルダマネージャ画面から操作します。管理ポータル画面から Analytics → 管理 → フォルダマネージャ と選択します。
 
フォルダマネージャ画面が開き、作成済みのフォルダ、ピボットテーブル、ダッシュボードが一覧表示されます。これまでに作成してきた Tutorial フォルダと、その中のピボットテーブルやダッシュボードも存在します。


では、この一覧にある Sample Dashboard の左側にあるチェックボックスにチェックを付けます。画面左側の [詳細] の表示が変わります。
このダッシュボードで使用している2つのピボットテーブルが依存関係にあることが表示されます。

では、その2つのピボットテーブルにもチェックを付け、3つのアイテムが選択された状態にします。

この状態で、画面左側の [サーバーディレクトリ] に書き込み可能なディレクトリを指定し、すぐ下の [エクスポート] ボタンをクリックします。
 
エクスポートが正常終了すれば、以下のダイアログが表示されます。
 
保存した先のディレクトリを確認しますと、3つのxmlファイルが作成されていることが分かります。
 
今しがたエクスポートしたxmlファイルをそのままインポートすることもできますが、これらをパッケージ化したクラスを作成します。
VSCode またはスタジオから、Tutorial.DashboardsAndPivots という新しいクラスを作成します。このクラスは %DeepSee.UserLibrary.Container を拡張する必要があります。 
 
このクラスに、以下のように Contents という名前の XData ブロックを追加します。

XData Contents [ XMLNamespace = "http://www.intersystems.com/deepsee/library" ] 
{ 
<items>
</items>
}

次に、先ほどエクスポートしたファイルから、ダッシュボードおよびピボットテーブルの定義を XData ブロックにコピーしていきます。
まず、ダッシュボードのエクスポートファイル Tutorial-Sample_Dashboard.xml を開きます。
 
ここから、<dashboard> のセクションのところ(上図の4~18行目)をコピーし、作成しているクラスの <items> の中にペーストします。
 
次に、Tutorial-Patients_by_Age_Group-pivot.xml を開きます。先ほどのダッシュボードのxmlに似ていますが、<dashboard> の代わりに <pivot> というセクションがあります。

 
この <pivot> セクションのところを、先ほどと同様にコピーし、クラスファイルの
<items> の中にペーストします。
位置は <dashboard> の前でも後ろでも構いませんが、混ざらないように注意してください。
  
最後の1つ、Tutorial-Patients_by_Diagnosis-pivot.xml も同様に <pivot> セクションをコピー&ペーストします。

 
クラス定義は以下のようになります。ここまでできたら、クラス定義を保存してください。ただし、まだコンパイルは行わないでください。

Class Tutorial.DashboradsAndPivots Extends %DeepSee.UserLibrary.Container
{

XData Contents [ XMLNamespace = "http://www.intersystems.com/deepsee/library" ]
{
<items>
<dashboard xmlns="http://www.intersystems.com/deepsee/library" name="Sample Dashboard" folderName="Tutorial" title="" description="" keywords="" owner="" shared="true" public="true" locked="false" resource="" timeCreated="2024-05-07T00:41:14.04Z" createdBy="_SYSTEM" category="" bookCover="" lastAccessed="2024-05-07T02:15:32Z" scheme="" worklistCount="2" snapTo="true" snapGrid="true" gridRows="10" gridCols="10" canResize="true" canModify="true" showTitleBar="true" titleBarOpacity="" titleBarColor="" selectedTitleBarOpacity="" selectedTitleBarColor="" titleBarTextColor="" selectedTitleBarTextColor="" titleBarFont="" companyName="" companyLogo="" companyStyle="" backgroundColor="white" backgroundImage="none" backgroundRepeat="no-repeat" backgroundSize="100% 100%" backgroundOpacity="1" widgetBorders="1px solid #F0F0F0" widgetBordersSwitch="edit" widgetBordersColor="#F0F0F0" widgetBordersStyle="solid" widgetBordersWidth="1" widgetBordersToggle="true">
  <widget name="ウィジェット1" type="pivot" subtype="pivot" subtypeClass="lineChart" title="" dataSource="Tutorial/Patients by Age Group.pivot" dataLink="" drillDownDataSource="" width="200" height="200" sidebarContent="" showSidebar="false" sidebarWidth="" maximized="false" homeRowL="0" homeColL="0" colSpanL="4" rowSpanL="4" showToolbar="true" showToolbarBottomBorder="true" showToolbarOnlyWhenMaximized="false" colorToolbar="#F0F0F0" opacityToolbar="1" backgroundColor="#F0F0F0" opacity="1" theme="" dataColorList="">
    <control name="" action="applyFilter" target="*" targetProperty="[HomeD].[H1].[ZIP Code]" location="dashboard" type="auto" controlClass="" label="ZIP Code" title="" value="&amp;[32007]" text="32007" readOnly="false" valueList="" displayList="" activeWhen="">
      <valueRequired>false</valueRequired>
    </control>
    <control name="" action="applyFilter" target="*" targetProperty="[AllerD].[H1].[Allergies]" location="dashboard" type="auto" controlClass="" label="Allergies" title="" value="&amp;[soy]" text="soy" readOnly="false" valueList="" displayList="" activeWhen="">
      <valueRequired>false</valueRequired>
    </control>
    <control name="" action="applyFilter" target="*" targetProperty="[ColorD].[H1].[Favorite Color]" location="dashboard" type="auto" controlClass="" label="Favorite Color" title="" value="&amp;[Blue]" text="Blue" readOnly="false" valueList="" displayList="" activeWhen="">
      <valueRequired>false</valueRequired>
    </control>
  </widget>
  <widget name="ウィジェット2" type="pivot" subtype="pivot" subtypeClass="lineChart" title="" dataSource="Tutorial/Patients by Diagnosis.pivot" dataLink="" drillDownDataSource="" width="200" height="200" sidebarContent="" showSidebar="false" sidebarWidth="" maximized="false" homeRowL="4" homeColL="0" colSpanL="4" rowSpanL="4" showToolbar="true" showToolbarBottomBorder="true" showToolbarOnlyWhenMaximized="false" colorToolbar="#F0F0F0" opacityToolbar="1" backgroundColor="#F0F0F0" opacity="1" theme="" dataColorList="">
  </widget>
</dashboard>
<pivot xmlns="http://www.intersystems.com/deepsee/library" name="Patients by Age Group" folderName="Tutorial" title="" description="" keywords="" owner="" shared="true" public="false" locked="false" resource="" timeCreated="2024-05-07T00:24:12.814Z" createdBy="_SYSTEM" category="" bookCover="" lastAccessed="2024-05-07T00:24:36Z" mdx="" cellWidth="120" columnHeaderStyle="" rowHeaderStyle="" cellStyle="" rowLabelSpan="true" columnLabelSpan="true" cellHeight="22" showEmptyRows="false" showEmptyColumns="false" cubeName="TUTORIAL" caption="" listing="" listingRows="" showStatus="true" canDrillDown="true" pageSize="100" colorScale="" rowTotals="false" columnTotals="false" rowTotalAgg="sum" columnTotalAgg="sum" rowTotalSource="page" showZebra="false" showRowCaption="true" printTitle="" printSubtitle="" printSubtitleOn="" showUser="" printPageSize="" printOrientation="1" printMarginTop="" printMarginLeft="" printMarginRight="" printMarginBottom="" printLabelWidth="" printCellWidth="" autoExecute="true" previewMode="false" manualMode="false" userMDX="" chartMarginTop="" chartMarginLeft="" chartMarginRight="" chartMarginBottom="" maxRows="" borderLeftCell="" borderRightCell="" borderTopCell="" borderBottomCell="" borderLeftCol="" borderRightCol="" borderTopCol="" borderBottomCol="" borderLeftRow="" borderRightRow="" borderTopRow="" borderBottomRow="" fontFamilyCell="" fontSizeCell="" fontFamilyCol="" fontSizeCol="" fontFamilyRow="" fontSizeRow="" showFilters="" showListingFilters="" showDate="" listingFontSize="" showZebraStripes="" filterTableStyle="" filterTableCaptionStyle="" filterTableItemStyle="" nowDisplayFormat="" measureLocation="columns" hideMeasures="1" backgroundImage="" backgroundOpacity=".12">
  <rowAxisOptions spec="" key="" value="" text="" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </rowAxisOptions>
  <columnAxisOptions spec="" key="" value="" text="" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </columnAxisOptions>
  <rowLevel spec="[AgeD].[H1].[Age Group].Members" key="" value="" text="Age Group" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
    <childLevels spec="[AgeD].[H1].[Age Bucket].Members" key="" value="" text="Age Bucket" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
    </childLevels>
  </rowLevel>
  <rowLevel spec="[AgeD].[All Patients]" key="" value="" text="All Patients" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </rowLevel>
  <columnLevel spec="[Measures].[%COUNT]" key="" value="" text="Count" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </columnLevel>
  <sqlRestriction></sqlRestriction>
</pivot>
<pivot xmlns="http://www.intersystems.com/deepsee/library" name="Patients by Diagnosis" folderName="Tutorial" title="" description="" keywords="" owner="" shared="true" public="false" locked="false" resource="" timeCreated="2024-05-07T00:29:52.151Z" createdBy="_SYSTEM" category="" bookCover="" lastAccessed="2024-05-07T00:29:54Z" mdx="" cellWidth="120" columnHeaderStyle="" rowHeaderStyle="" cellStyle="" rowLabelSpan="true" columnLabelSpan="true" cellHeight="22" showEmptyRows="false" showEmptyColumns="false" cubeName="TUTORIAL" caption="" listing="" listingRows="" showStatus="true" canDrillDown="true" pageSize="100" colorScale="" rowTotals="false" columnTotals="false" rowTotalAgg="sum" columnTotalAgg="sum" rowTotalSource="page" showZebra="false" showRowCaption="true" printTitle="" printSubtitle="" printSubtitleOn="" showUser="" printPageSize="" printOrientation="1" printMarginTop="" printMarginLeft="" printMarginRight="" printMarginBottom="" printLabelWidth="" printCellWidth="" autoExecute="true" previewMode="false" manualMode="false" userMDX="" chartMarginTop="" chartMarginLeft="" chartMarginRight="" chartMarginBottom="" maxRows="" borderLeftCell="" borderRightCell="" borderTopCell="" borderBottomCell="" borderLeftCol="" borderRightCol="" borderTopCol="" borderBottomCol="" borderLeftRow="" borderRightRow="" borderTopRow="" borderBottomRow="" fontFamilyCell="" fontSizeCell="" fontFamilyCol="" fontSizeCol="" fontFamilyRow="" fontSizeRow="" showFilters="" showListingFilters="" showDate="" listingFontSize="" showZebraStripes="" filterTableStyle="" filterTableCaptionStyle="" filterTableItemStyle="" nowDisplayFormat="" measureLocation="columns" hideMeasures="1" backgroundImage="" backgroundOpacity=".12">
  <rowAxisOptions spec="" key="" value="" text="" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </rowAxisOptions>
  <columnAxisOptions spec="" key="" value="" text="" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </columnAxisOptions>
  <rowLevel spec="[DiagD].[H1].[Diagnoses].Members" key="" value="" text="Diagnoses" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </rowLevel>
  <columnLevel spec="[Measures].[%COUNT]" key="" value="" text="Count" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </columnLevel>
  <columnLevel spec="[Measures].[Avg Age]" key="" value="" text="Avg Age" headEnabled="false" headCount="" filterEnabled="false" filterExpression="" orderEnabled="false" orderExpression="" orderDirection="BDESC" aggEnabled="false" aggFunction="" aggFunctionParm="" levelCaption="" levelFormat="" levelSummary="" levelType="" drillLevel="0" advanced="false" levelStyle="" levelHeaderStyle="" suppress8020="false" drilldownSpec="" enabled="true">
  </columnLevel>
  <sqlRestriction></sqlRestriction>
</pivot>
</items>
}

}

では、フォルダマネージャ画面に戻り、ページをリロードして更新します。先ほど付けたチェックマークがリセットされます。
リストから、先ほどの3つのアイテムを再びチェックし、画面左側の [削除] ボタンを押してこれらを削除します。

確認のダイアログが表示されますので、[OK] で進めます。なにかを削除するのは、いつも不安になりますが。。
 
「3アイテムを削除しました」とのメッセージが返ってきました。

 
画面がリフレッシュされ、リストには Tutorial フォルダだけが残り、3つのアイテムは削除されました。
 では、先ほどのクラス定義に戻り、保存していたクラス定義をコンパイルします。
うまくいけば、以下のようにコンパイルの成功と、3つのアイテムのインポートのログが出てくるかと思います。

 
では、フォルダマネージャ画面に戻り、画面をリフレッシュします。
そうしますと Tutorial フォルダには、削除した3つのアイテムが戻っています。よかった!

おわりに

今回はピボットテーブルやダッシュボードのインポート・エクスポートと、それらをパッケージ化するクラスの作成方法について学びました。
これでIRIS BIの開発者向けチュートリアルのすべての内容を実施しました。全部で11回と、思った以上に長丁場になってしまいましたが。。
チュートリアルの内容は、IRIS BIを利用するに際しての基本的な知識や作業が網羅されておりますので、このシリーズを通すことでIRIS BIに対する理解が深まったり、開発作業などにおける疑問の解消につながればよいなと思っております。
最後までお付き合いいただきまして、ありがとうございました!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Mai 25, 2024

[Video] Passo a passo do IRIS AI Studio: Liberte o poder das Incorporações de Vetor no IRIS DB

Olá Comunidade,

Aqui vai um simples passo a passo sobre as capacidades da plataforma  Studio IRIS AI. Ele cobre um fluxo completo de carregar dados no IRIS DB como incorporações de vetor e recuperação de informações usando 4 canais diferentes (pesquisa, conversa, recomendação e similaridade). No último lançamento, adicionei suporte para docker para instalações locais e uma versão ao vivo para explorar.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mai 24, 2024 7m de lecture

IRIS AI Studio: Conectores para transformar seus arquivos em vetores incorporados para capacidades do GenAI

 

No artigo anterior, vimos diferentes módulos do Studio IRIS AI e como ele poderia ajudar a explorar as capacidades da GenAI além do IRIS DB perfeitamente, mesmo para alguém não técnico. Nesse artigo, vamos mergulhar a fundo pelo módulo "Connectors", o que permite que os usuários carreguem dados desde uma fonte local ou cloud (AWS S3, Airtable, Azure Blob) no IRSI DB como vetores incorporados, ao configurar também definições de incorporação como modelo e dimensões.

 

Novas Atualizações ⛴️ 

  • Demo Online da aplicação está disponível agora emt https://iris-ai-studio.vercel.app
  • Módulo de Connectors module agora podem carregar dados de (incorporações OpenAI/Cohere)
    • Armazenamento Local
    • AWS S3
    • Armazenamento Azure Blob
    • Airtable
  • Módulo Playground é totalmente funcional com 
    • Procura Semântica
    • Chat with Docs (Conversa com Docs)
    • Máquina de recomendação
      • Cohere Re-rank
      • OpenAI Re-rank
    • Máquina de Similaridades

 

Connectors

Se você já usou o ChatGPT 4 ou outros serviços LLM (Large Language Model - Grandes modelos de linguagem) onde se usa a inteligência a partir de um contexto, isso idealmente adiciona valor de negócio sobre uma LLM genérica. Esse módulo oferece uma interface fora da caixa e no-code (sem código) para carregar dados de diferentes fontes, realiza incorporações neles e os carrega na IRIS DB. Esse módulo de conectores passam por 3 passos num geral.

  1. Buscar dados de fontes diferentes
  2. Pegar os dados incorporados usando modelos de incorporação OpenAI/Cohere 
  3. Carregar as incorporações e texto dentro da IRIS DB

 

Passo 1: Buscando dados de diferentes fontes

1. Armazenamento Local - Subir arquivos. Eu usei os Indexes Llama do SimpleDirectoryReader para carregar dados dos arquivos.

(uma limitação de um máximo de 10 arquivos é usada para sustentar o carregamento no pequeno servidor usado para fins de demonstração. Isso pode ser negad na sua implementação.)

# Checa por arquivos carregados
if "files" not in request.files:
  return jsonify({"error": "No files uploaded"}), 400
uploaded_files = request.files.getlist("files")
if len(uploaded_files) > 10:
  return jsonify({"error": "Exceeded maximum file limit (10)"}), 400
temp_paths = []
for uploaded_file in uploaded_files:
  fd, temp_path = tempfile.mkstemp()
  with os.fdopen(fd, "wb") as temp:
  uploaded_file.save(temp)
  temp_paths.append(temp_path)

# Carrega dados dos arquivos
documents = SimpleDirectoryReader(input_files=temp_paths).load_data()

 

 2. AWS S3

Parâmetros de Entrada: Client ID, Client Secret e Bucket Name. Você pode buscar o ID do cliente e o segredo da console AWS - IAM ou criando permissões de leitura para seu bucket do lado de lá.

Eu usei a livraria "s3fs" para buscar o conteúdo do AWS S3 e os Index Llama SimpleDirectoryReader para carregar os dados dos arquivos obtidos.

access_key = request.form.get('aws_access_key')
secret = request.form.get('aws_secret')
bucket_name = request.form.get('aws_bucket_name')

if not all([access_key, secret, bucket_name]):
    return jsonify({"error": "Missing required AWS S3 parameters"}), 400
s3_fs = S3FileSystem(key=access_key, secret=secret)
reader = SimpleDirectoryReader(input_dir=bucket_name, fs=s3_fs, recursive=True)
documents = reader.load_data()

 

3. Airtable

Parâmetros de Input: Token (API Key), Base ID e Table ID. A Chave API pode ser recuperada do Airtable's Developer Hub. O Base ID e o Table ID podem ser achados da URL da tabela. A que começa com "app..." é o Base ID e a que começa com "tbl..." é o Table ID.

Eu usei o Airtable Reader do LlamaHub para buscar os conteúdos do Airtable e o Index do Llama SimpleDirectoryReader para carregar dados dos arquivos buscados.

airtable_token = request.form.get('airtable_token')
table_id = request.form.get('table_id')
base_id = request.form.get('base_id')

if not all([airtable_token, table_id, base_id]):
        return jsonify({"error": "Missing required Airtable parameters"}), 400
reader = AirtableReader(airtable_token)
documents = reader.load_data(table_id=table_id, base_id=base_id)

 

4. Armazenamento Azure Blob: 

Parâmetros de entrada: Nome do Container e String de Conexão. Essas informações podem ser recuperadas da página Azure's AD. 

 

I have used AzStorageBlob Reader from LlamaHub to fetch the contents from Azure Storage and Llama Index's SimpleDirectoryReader to load data from the fetched files.

container_name = request.form.get('container_name')
connection_string = request.form.get('connection_string')

if not all([container_name, connection_string]):
    return jsonify({"error": "Missing required Azure Blob Storage parameters"}), 400
loader = AzStorageBlobReader(
    container_name=container_name,
    connection_string=connection_string,
)
documents = loader.load_data()

LlamaHub contem mais de 500 conectores desde tipos diferentes tipos de arquivos até serviços. Adicionar um novo conector baseado nas suas necessidades deve ser bastante simples.

 

Passo 2: Buscando os dados incorporados usando modelos de incorporação OpenAI/Cohere

Incorporações são representações numéricas que capturam a semântica do texto, permitindo aplicações como pesquisa e correspondência por similaridade. Idealmente o objetivo é, quando um usuário faz uma pergunta, sua incorporação é comparada com as incorporações de documentos usando métodos como similaridade de cosseno - maior similaridade indica maior conteúdo relevante.

Aqui, estou usando a livraria llama-iris para armazenar incorporações na IRIS DB. Na IRISVectorStore, parâmetors 

  • Connection String é necess´rio para interação com a DB (database - base de dados)
    • Para testar na versão de demonstração online, você não poderá usar uma instância local (localhost).
    • Você precisaria de uma instância IRIS que rode em AWS/Azure/GCP com versão 2024.1+ , já que essas suportam armazenamento e recuperação de vetores.
    • A instância de comunidade IRIS, fornecida pelo learning hub parece estar rodando com a versão 2022.1, então não pode ser usada para explorações aqui.purpose.
  • Table Name é o que será usado para criar ou atualizar os registros.
    • A livraria "llama-iris" acrescenta "data_" ao começo do nome da tabela. Então, quando estiver tentando checar os dados por meio de um cliente DB, acrescente "data_" ao começo do nome da tabela. Por exemplo, se você nomeou uma tabela como "usuarios",  você terá que recuperar como "data_usuarios".
  • Embed Dim / Embedding Dimension é a dimensão do modelo de incorporação que o usuário utilizou
    • Digamos que você tenha carregado a tabela "usuarios" usando incorporações OpenAI - "text-embedding-3-small", com dimensão 1536 . Você seria capaz de carregar mais dados na tabela, mas apenass com dimensão 1536. O mesmo ocorre com recuperações de incorporações também. Então, tenha certeza de escolher o modedlo correto nas fases iniciais.
CONNECTION_STRING = f"iris://{username}:{password}@{hostname}:{port}/{namespace}"
vector_store = IRISVectorStore.from_params(
    connection_string=CONNECTION_STRING,
    table_name=table_name,
    embed_dim=embedding_dimension
)

Settings.embed_model = set_embedding_model(indexing_type, model_name, api_key)

storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
    documents,
    storage_context=storage_context
)

 

Passo 3: Carregando a incorporação e texto na IRIS DB

O código escrito acima cobre a indexação e carregamento de dados dentro da IRIS DB. Essa deve ser a aparência dos dados:

Text - Informação em texto puro que foi extraída dos arquivos que carregamos

Node ID - Isso seria utilizado como referência quando fazemos recuperações

Embeddings (incorporações) - A representação numérica dos dados de texto

 

Esses três passos são a maneira que o módulo de conectores funciona. Quando se trata de dados requeridos, como credenciais de DB, e chaves de API, eu busco do usuário e salvo no armazenamento local do navegador (Detalhes da Instância) e no armazenamento da sessão (chaves de API). Isso dá maior modularidade à aplicação para qualquer um explorar.

 

Ao unir o carregamento de dados incorporados por vetores de arquivos e a recuperação de conteúdo por vários canais, o Studio IRIS AI permite uma maneira intuitiva de explorar as possibilidades de Generative AI que o InterSystems IRIS oferece - não apenas para clientes atuais, mas também para novas perspectivas.

🚀 Vote por essa aplicação na competição de Vector Search, GenAI and ML, se acreditar que ela tem futuro!

Se você pensar em alguma aplicação em potencial usando essa implementação, por favor sinta-se à vontade para compartilhar no fio de discussão.

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer