Rememberizer Docs
サインインサインアップお問い合わせ
日本語
日本語
  • なぜ Rememberizer なのか?
  • 背景
    • ベクトル埋め込みとベクトルデータベースとは?
    • 用語集
    • 標準化された用語
  • 個人利用
    • はじめに
      • 知識を検索する
      • メメントフィルターアクセス
      • 一般的な知識
      • 埋め込まれた知識を管理する
  • インテグレーション
    • Rememberizer アプリ
    • Rememberizer Slack インテグレーション
    • Rememberizer Google Drive インテグレーション
    • Rememberizer Dropbox インテグレーション
    • Rememberizer Gmail インテグレーション
    • Rememberizer Memory インテグレーション
    • Rememberizer MCP サーバー
    • サードパーティアプリの管理
  • 開発者リソース
    • 開発者概要
  • 統合オプション
    • APIキーの登録と使用
    • Rememberizerアプリの登録
    • Rememberizerアプリの認証
    • Rememberizer GPTの作成
    • LangChain統合
    • ベクターストア
    • Slackとの対話サンプルWebアプリ
  • エンタープライズ統合
    • エンタープライズ統合パターン
  • APIリファレンス
    • APIドキュメントホーム
    • 認証
  • コアAPI
    • 意味的類似性によるドキュメントの検索
    • ドキュメントの取得
    • ドキュメントの内容を取得
    • Slackコンテンツの取得
    • Rememberizerにコンテンツを記憶する
  • アカウントと設定
    • 現在のユーザーアカウントの詳細を取得
    • 利用可能なデータソース統合の一覧
    • メメント
    • 追加されたすべての公開知識を取得
  • ベクターストアAPI
    • ベクターストアのドキュメント
    • ベクターストア情報を取得する
    • ベクターストア内のドキュメントのリストを取得する
    • ドキュメント情報を取得する
    • ベクターストアに新しいテキストドキュメントを追加する
    • ファイルをベクターストアにアップロードする
    • ベクターストア内のファイルコンテンツを更新する
    • ベクターストア内のドキュメントを削除する
    • 意味的類似性によるベクターストアドキュメントの検索
  • 追加リソース
    • 通知
      • 利用規約
      • プライバシーポリシー
      • B2B
        • Redditエージェントについて
  • リリース
    • リリースノートホーム
  • 2025年のリリース
    • 2025年4月25日
    • 2025年4月18日
    • 2025年4月11日
    • 2025年4月4日
    • 2025年3月28日
    • 2025年3月21日
    • 2025年3月14日
    • 2025年1月17日
  • 2024年のリリース
    • 2024年12月27日
    • 2024年12月20日
    • 2024年12月13日
    • 2024年12月6日
  • 2024年11月29日
  • 2024年11月22日
  • 2024年11月15日
  • 2024年11月8日
  • 2024年11月1日
  • 2024年10月25日
  • 2024年10月18日
  • 2024年10月11日
  • 2024年10月4日
  • 2024年9月27日
  • 2024年9月20日
  • 2024年9月13日
  • 2024年8月16日
  • 2024年8月9日
  • 2024年8月2日
  • 2024年7月26日
  • 2024年7月12日
  • 2024年6月28日
  • 2024年6月14日
  • 2024年5月31日
  • 2024年5月17日
  • 2024年5月10日
  • 2024年4月26日
  • 2024年4月19日
  • 2024年4月12日
  • 2024年4月5日
  • 2024年3月25日
  • 2024年3月18日
  • 2024年3月11日
  • 2024年3月4日
  • 2024年2月26日
  • 2024年2月19日
  • 2024年2月12日
  • 2024年2月5日
  • 2024年1月29日
  • 2024年1月22日
  • 2024年1月15日
  • LLM ドキュメント
    • Rememberizer LLM レディ ドキュメント
Powered by GitBook
On this page
  • エンタープライズインテグレーションパターン
  • エンタープライズ統合の概要
  • エンタープライズ統合のためのアーキテクチャパターン
  • エンタープライズセキュリティパターン
  • スケーラビリティパターン
  • チームベースの知識管理
  • エンタープライズ統合のベストプラクティス
  • 10分間頻繁にアクセスされるドキュメントをキャッシュする
  • コンプライアンスの考慮事項
  • ロギングの設定
  1. エンタープライズ統合

エンタープライズ統合パターン

Rememberizerを使用したエンタープライズ統合のためのアーキテクチャパターン、セキュリティ考慮事項、およびベストプラクティス

エンタープライズインテグレーションパターン

このガイドは、Rememberizerの知識管理およびセマンティック検索機能をエンタープライズ環境に統合しようとする組織に向けて、包括的な情報を提供します。アーキテクチャパターン、セキュリティの考慮事項、スケーラビリティ、およびベストプラクティスについて説明します。

エンタープライズ統合の概要

Rememberizerは、基本的なAPIの使用を超えた堅牢なエンタープライズ統合機能を提供し、組織が洗練された知識管理システムを構築できるようにします:

  • 部門やチーム全体の組織的ニーズに応じてスケールする

  • エンタープライズ要件に対するセキュリティとコンプライアンスを維持する

  • 既存のシステムやワークフローツールと統合する

  • チームベースのアクセス制御と知識共有を可能にする

  • 文書処理のための高ボリュームバッチ操作をサポートする

エンタープライズ統合のためのアーキテクチャパターン

1. マルチテナント知識管理

組織は、チーム、部門、または機能によって知識を整理するためにマルチテナントアーキテクチャを実装できます:

                  ┌───────────────┐
                  │   Rememberizer│
                  │     プラットフォーム  │
                  └───────┬───────┘
                          │
        ┌─────────────────┼─────────────────┐
        │                 │                 │
┌───────▼────────┐ ┌──────▼───────┐ ┌───────▼────────┐
│  エンジニアリング   │ │    セールス     │ │     法務      │
│  知識ベース│ │ 知識ベース│ │ 知識ベース │
└───────┬────────┘ └──────┬───────┘ └───────┬────────┘
        │                 │                 │
        │                 │                 │
┌───────▼────────┐ ┌──────▼───────┐ ┌───────▼────────┐
│  チーム特有の │ │ チーム特有の│ │  チーム特有の  │
│    メメント    │ │   メメント   │ │     メメント    │
└────────────────┘ └──────────────┘ └─────────────────┘

実装手順:

  1. 各部門または主要な知識領域のために別々のベクトルストアを作成する

  2. Rememberizerのチーム機能を使用してチームベースのアクセス制御を構成する

  3. 特定の知識サブセットへのアクセスを制御するためにメメントを定義する

  4. 知識管理者と消費者のための役割ベースの権限を実装する

2. インテグレーションハブアーキテクチャ

既存のシステムを持つ企業にとって、ハブアンドスポークパターンはRememberizerが中央の知識リポジトリとして機能することを可能にします:

       ┌─────────────┐               ┌─────────────┐
       │ CRMシステム  │               │  ERPシステム │
       └──────┬──────┘               └──────┬──────┘
              │                             │
              │                             │
              ▼                             ▼
       ┌──────────────────────────────────────────┐
       │                                          │
       │           エンタープライズサービスバス         │
       │                                          │
       └────────────────────┬─────────────────────┘
                            │
                            ▼
                  ┌───────────────────┐
                  │   Rememberizer    │
                  │ 知識プラットフォーム│
                  └─────────┬─────────┘
                            │
          ┌─────────────────┴────────────────┐
          │                                  │
┌─────────▼──────────┐            ┌──────────▼────────┐
│ 内部知識ベース     │            │ 顧客知識ベース     │
│                   │            │                   │
└────────────────────┘            └─────────────────────┘

実装手順:

  1. システム間統合のためのAPIキーを作成し、設定する

  2. 知識リポジトリへのユーザー基盤のアクセスのためにOAuth2を実装する

  3. 定期的な知識の同期のためにETLプロセスを設定する

  4. 知識の更新を外部システムに通知するためにウェブフックを使用する

3. マイクロサービスアーキテクチャ

マイクロサービスを採用する組織は、Rememberizerを専門の知識サービスとして統合します:

┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│ ユーザーサービス│  │ 認証サービス│  │ データサービス│  │ 検索UI     │
└──────┬──────┘  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘
       │                │                │                │
       └────────────────┼────────────────┼────────────────┘
                        │                │                  
                        ▼                ▼                  
               ┌─────────────────────────────────┐         
               │       APIゲートウェイ           │         
               └─────────────────┬─────────────┘         
                                 │                        
                                 ▼                        
                       ┌───────────────────┐              
                       │   Rememberizer    │              
                       │   知識API         │              
                       └───────────────────┘              

実装手順:

  1. マイクロサービス統合のための専用サービスアカウントを作成する

  2. サービス間通信のためにJWTトークンベースの認証を実装する

  3. レジリエンスのために冪等性のあるAPIインタラクションを設計する

  4. フォールトトレランスのためにサーキットブレーカーを実装する

エンタープライズセキュリティパターン

認証と承認

Rememberizerは、企業環境に適した複数の認証方法をサポートしています:

1. OAuth2統合

ユーザーに基づくアクセスのために、OAuth2認可フローを実装します:

// ステップ1: ユーザーをRememberizer認可エンドポイントにリダイレクトする
function redirectToAuth() {
  const authUrl = 'https://api.rememberizer.ai/oauth/authorize/';
  const params = new URLSearchParams({
    client_id: 'YOUR_CLIENT_ID',
    redirect_uri: 'YOUR_REDIRECT_URI',
    response_type: 'code',
    scope: 'read write'
  });
  
  window.location.href = `${authUrl}?${params.toString()}`;
}

// ステップ2: 認可コードをトークンに交換する
async function exchangeCodeForTokens(code) {
  const tokenUrl = 'https://api.rememberizer.ai/oauth/token/';
  const response = await fetch(tokenUrl, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      client_id: 'YOUR_CLIENT_ID',
      client_secret: 'YOUR_CLIENT_SECRET',
      grant_type: 'authorization_code',
      code: code,
      redirect_uri: 'YOUR_REDIRECT_URI'
    })
  });
  
  return response.json();
}

2. サービスアカウント認証

システム間統合には、APIキー認証を使用します:

import requests

def search_knowledge_base(query, api_key):
    headers = {
        'X-API-Key': api_key,
        'Content-Type': 'application/json'
    }
    
    payload = {
        'query': query,
        'num_results': 10
    }
    
    response = requests.post(
        'https://api.rememberizer.ai/api/v1/search/',
        headers=headers,
        json=payload
    )
    
    return response.json()

3. SAMLとエンタープライズSSO

エンタープライズシングルサインオン統合のために:

  1. アイデンティティプロバイダー(Okta、Azure ADなど)を設定して、Rememberizerをサービスプロバイダーとして認識させます

  2. Rememberizerのユーザー属性に一致するようにSAML属性マッピングを設定します

  3. Rememberizerを設定して、アイデンティティプロバイダーに認証を委任します

ゼロトラストセキュリティモデル

Rememberizerを使用してゼロトラストアプローチを実装するには:

  1. マイクロセグメンテーション:異なるアクセス制御を持つ別々の知識ベースを作成する

  2. 継続的検証:短命のトークンと定期的な再認証を実装する

  3. 最小特権:特定の知識サブセットへのアクセスを制限する詳細なメメントを定義する

  4. イベントログ:機密知識へのすべてのアクセスを監視および監査する

スケーラビリティパターン

ドキュメント取り込みのためのバッチ処理

大規模なドキュメント取り込みのために、バッチアップロードパターンを実装します:

import requests
import time
from concurrent.futures import ThreadPoolExecutor

def batch_upload_documents(files, api_key, batch_size=5):
    """
    レート制限を避けるためにドキュメントをバッチでアップロードします
    
    引数:
        files: アップロードするファイルパスのリスト
        api_key: Rememberizer APIキー
        batch_size: 同時アップロードの数
    """
    headers = {
        'X-API-Key': api_key
    }
    
    results = []
    
    # ファイルをバッチで処理
    with ThreadPoolExecutor(max_workers=batch_size) as executor:
        for i in range(0, len(files), batch_size):
            batch = files[i:i+batch_size]
            futures = []
            
            # アップロードのバッチを提出
            for file_path in batch:
                with open(file_path, 'rb') as f:
                    files = {'file': f}
                    future = executor.submit(
                        requests.post,
                        'https://api.rememberizer.ai/api/v1/documents/upload/',
                        headers=headers,
                        files=files
                    )
                    futures.append(future)
            
            # 結果を収集
            for future in futures:
                response = future.result()
                results.append(response.json())
            
            # レート制限 - バッチ間で一時停止
            if i + batch_size < len(files):
                time.sleep(1)
    
    return results

高ボリューム検索操作

高ボリューム検索を必要とするアプリケーション向け:

async function batchSearchWithRateLimit(queries, apiKey, options = {}) {
  const {
    batchSize = 5,
    delayBetweenBatches = 1000,
    maxRetries = 3,
    retryDelay = 2000
  } = options;
  
  const results = [];
  
  // クエリをバッチで処理
  for (let i = 0; i < queries.length; i += batchSize) {
    const batch = queries.slice(i, i + batchSize);
    const batchPromises = batch.map(query => searchWithRetry(query, apiKey, maxRetries, retryDelay));
    
    // バッチを実行
    const batchResults = await Promise.all(batchPromises);
    results.push(...batchResults);
    
    // バッチ間のレート制限を適用
    if (i + batchSize < queries.length) {
      await new Promise(resolve => setTimeout(resolve, delayBetweenBatches));
    }
  }
  
  return results;
}

async function searchWithRetry(query, apiKey, maxRetries, retryDelay) {
  let retries = 0;
  
  while (retries < maxRetries) {
    try {
      const response = await fetch('https://api.rememberizer.ai/api/v1/search/', {
        method: 'POST',
        headers: {
          'X-API-Key': apiKey,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({ query })
      });
      
      if (response.ok) {
        return response.json();
      }
      
      // レート制限を特に処理
      if (response.status === 429) {
        const retryAfter = response.headers.get('Retry-After') || retryDelay / 1000;
        await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
        retries++;
        continue;
      }
      
      // その他のエラー
      throw new Error(`検索に失敗しました。ステータス: ${response.status}`);
    } catch (error) {
      retries++;
      if (retries >= maxRetries) {
        throw error;
      }
      await new Promise(resolve => setTimeout(resolve, retryDelay));
    }
  }
}

チームベースの知識管理

Rememberizerはチームベースの知識管理をサポートし、企業が以下を実現できるようにします:

  1. チームワークスペースの作成:部門や機能ごとに知識を整理

  2. 役割ベースの権限の割り当て:誰が知識を表示、編集、または管理できるかを制御

  3. チーム間での知識の共有:特定の知識ベースへのチーム間アクセスを構成

チームの役割と権限

Rememberizerは以下のチームの役割をサポートしています:

役割
機能

オーナー

完全な管理アクセス、チームメンバーとすべての知識を管理できます

管理者

知識を管理し、メメントを設定できますが、チーム自体を管理することはできません

メンバー

メメントの権限に応じて知識を表示および検索できます

チームベースの知識共有の実装

import requests

def create_team_knowledge_base(team_id, name, description, api_key):
    """
    特定のチームのための知識ベースを作成する
    """
    headers = {
        'X-API-Key': api_key,
        'Content-Type': 'application/json'
    }
    
    payload = {
        'team_id': team_id,
        'name': name,
        'description': description
    }
    
    response = requests.post(
        'https://api.rememberizer.ai/api/v1/teams/knowledge/',
        headers=headers,
        json=payload
    )
    
    return response.json()

def grant_team_access(knowledge_id, team_id, permission_level, api_key):
    """
    チームに知識ベースへのアクセスを付与する
    
    Args:
        knowledge_id: 知識ベースのID
        team_id: アクセスを付与するチームのID
        permission_level: 'read', 'write', または 'admin'
        api_key: Rememberizer APIキー
    """
    headers = {
        'X-API-Key': api_key,
        'Content-Type': 'application/json'
    }
    
    payload = {
        'team_id': team_id,
        'knowledge_id': knowledge_id,
        'permission': permission_level
    }
    
    response = requests.post(
        'https://api.rememberizer.ai/api/v1/knowledge/permissions/',
        headers=headers,
        json=payload
    )
    
    return response.json()

エンタープライズ統合のベストプラクティス

1. 堅牢なエラーハンドリングを実装する

さまざまなエラーシナリオに優雅に対処できるように統合を設計します:

async function robustApiCall(endpoint, method, payload, apiKey) {
  try {
    const response = await fetch(`https://api.rememberizer.ai/api/v1/${endpoint}`, {
      method,
      headers: {
        'X-API-Key': apiKey,
        'Content-Type': 'application/json'
      },
      body: method !== 'GET' ? JSON.stringify(payload) : undefined
    });
    
    // 異なるレスポンスタイプを処理する
    if (response.status === 204) {
      return { success: true };
    }
    
    if (!response.ok) {
      const error = await response.json();
      throw new Error(error.message || `API呼び出しがステータスで失敗しました: ${response.status}`);
    }
    
    return await response.json();
  } catch (error) {
    // トラブルシューティングのためにエラーの詳細をログに記録する
    console.error(`エンドポイント ${endpoint} へのAPI呼び出しが失敗しました:`, error);
    
    // 呼び出し元のコードに意味のあるエラーを提供する
    throw new Error(`エンドポイント ${endpoint} に対して ${method} に失敗しました: ${error.message}`);
  }
}

2. よくアクセスされる知識のキャッシュを実装する

APIの負荷を軽減し、適切なキャッシュでパフォーマンスを向上させます:

import requests
import time
from functools import lru_cache

10分間頻繁にアクセスされるドキュメントをキャッシュする

@lru_cache(maxsize=100) def get_document_with_cache(document_id, api_key, timestamp=None): """ キャッシュを使用してドキュメントを取得する

引数:
    document_id: 取得するドキュメントのID
    api_key: Rememberizer APIキー
    timestamp: キャッシュ無効化のタイムスタンプ(デフォルト: 10分ごと)
"""
# キャッシュ無効化のために10分ごとに変わるタイムスタンプを生成する
if timestamp is None:
    timestamp = int(time.time() / 600)

headers = {
    'X-API-Key': api_key
}

response = requests.get(
    f'https://api.rememberizer.ai/api/v1/documents/{document_id}/',
    headers=headers
)

return response.json()

### 3. ドキュメントアップロードの非同期処理を実装する

大規模なドキュメントセットの場合、非同期処理を実装します:

```javascript
async function uploadLargeDocument(file, apiKey) {
  // ステップ 1: アップロードを開始する
  const initResponse = await fetch('https://api.rememberizer.ai/api/v1/documents/upload-async/', {
    method: 'POST',
    headers: {
      'X-API-Key': apiKey,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      filename: file.name,
      filesize: file.size,
      content_type: file.type
    })
  });
  
  const { upload_id, upload_url } = await initResponse.json();
  
  // ステップ 2: 提供されたURLにファイルをアップロードする
  await fetch(upload_url, {
    method: 'PUT',
    body: file
  });
  
  // ステップ 3: 処理状況を監視する
  const processingId = await initiateProcessing(upload_id, apiKey);
  return monitorProcessingStatus(processingId, apiKey);
}

async function initiateProcessing(uploadId, apiKey) {
  const response = await fetch('https://api.rememberizer.ai/api/v1/documents/process/', {
    method: 'POST',
    headers: {
      'X-API-Key': apiKey,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      upload_id: uploadId
    })
  });
  
  const { processing_id } = await response.json();
  return processing_id;
}

async function monitorProcessingStatus(processingId, apiKey, interval = 2000) {
  while (true) {
    const statusResponse = await fetch(`https://api.rememberizer.ai/api/v1/documents/process-status/${processingId}/`, {
      headers: {
        'X-API-Key': apiKey
      }
    });
    
    const status = await statusResponse.json();
    
    if (status.status === 'completed') {
      return status.document_id;
    } else if (status.status === 'failed') {
      throw new Error(`処理に失敗しました: ${status.error}`);
    }
    
    // 再確認する前に待機する
    await new Promise(resolve => setTimeout(resolve, interval));
  }
}

4. 適切なレート制限を実装する

信頼性のある操作を確保するためにAPIのレート制限を尊重してください:

import requests
import time
from functools import wraps

class RateLimiter:
    def __init__(self, calls_per_second=5):
        self.calls_per_second = calls_per_second
        self.last_call_time = 0
        self.min_interval = 1.0 / calls_per_second
    
    def __call__(self, func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            current_time = time.time()
            time_since_last_call = current_time - self.last_call_time
            
            if time_since_last_call < self.min_interval:
                sleep_time = self.min_interval - time_since_last_call
                time.sleep(sleep_time)
            
            self.last_call_time = time.time()
            return func(*args, **kwargs)
        
        return wrapper

# APIコールにレート制限を適用する
@RateLimiter(calls_per_second=5)
def search_documents(query, api_key):
    headers = {
        'X-API-Key': api_key,
        'Content-Type': 'application/json'
    }
    
    payload = {
        'query': query
    }
    
    response = requests.post(
        'https://api.rememberizer.ai/api/v1/search/',
        headers=headers,
        json=payload
    )
    
    return response.json()

コンプライアンスの考慮事項

データ居住地

データ居住地要件のある組織向け:

  1. 適切な地域を選択: 準拠した地域でのRememberizerデプロイメントを選択

  2. データフローを文書化: 知識が保存され、処理される場所をマッピング

  3. フィルタリングを実装: メメントを使用して機密データアクセスを制限

監査ログ

コンプライアンスのために包括的な監査ログを実装します:

import requests
import json
import logging

ロギングの設定

logging.basicConfig( level=logging.INFO, format='%(asctime)s [%(levelname)s] %(message)s', handlers=[ logging.FileHandler('rememberizer_audit.log'), logging.StreamHandler() ] )

def audit_log_api_call(endpoint, method, user_id, result_status): """ 監査目的のためのAPI呼び出しの詳細をログに記録する """ log_entry = { 'timestamp': time.time(), 'endpoint': endpoint, 'method': method, 'user_id': user_id, 'status': result_status }

logging.info(f"API CALL: {json.dumps(log_entry)}")

def search_with_audit(query, api_key, user_id): endpoint = 'search' method = 'POST'

try:
    headers = {
        'X-API-Key': api_key,
        'Content-Type': 'application/json'
    }
    
    payload = {
        'query': query
    }
    
    response = requests.post(
        'https://api.rememberizer.ai/api/v1/search/',
        headers=headers,
        json=payload
    )
    
    status = 'success' if response.ok else 'error'
    audit_log_api_call(endpoint, method, user_id, status)
    
    return response.json()
except Exception as e:
    audit_log_api_call(endpoint, method, user_id, 'exception')
    raise

## 次のステップ

Rememberizerを使用してエンタープライズ統合を実装するには:

1. **知識アーキテクチャを設計する**: 知識ドメインとアクセスパターンをマッピングする
2. **役割ベースのチーム構造を設定する**: チームを作成し、適切な権限を割り当てる
3. **認証フローを実装する**: 要件を満たす認証方法を選択し、実装する
4. **スケーラブルなワークフローを設計する**: ドキュメント取り込みのためのバッチ処理を実装する
5. **監視および監査ポリシーを確立する**: コンプライアンスと運用のためにログ記録と監視を設定する

## 関連リソース

* [メメントフィルターアクセス](../personal/mementos-filter-access.md) - 統合に利用可能なデータソースを制御する
* [APIドキュメント](api-docs/README.md) - すべてのエンドポイントの完全なAPIリファレンス
* [LangChain統合](langchain-integration.md) - LangChainフレームワークとのプログラムによる統合
* [Rememberizer GPTの作成](creating-a-rememberizer-gpt.md) - OpenAIのGPTプラットフォームとの統合
* [ベクターストア](vector-stores.md) - Rememberizerのベクターデータベース実装の技術的詳細

エンタープライズ統合に関する追加の支援が必要な場合は、サポートポータルを通じてRememberizerチームにお問い合わせください。
PreviousSlackとの対話サンプルWebアプリNextAPIドキュメントホーム

Last updated 1 month ago