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 Agent
  • 发布
    • 发布说明首页
  • 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. 使用 Webhook 通知外部系统知识更新

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 和企业单点登录

对于企业单点登录集成:

  1. 配置您的身份提供者(Okta、Azure AD 等)以识别 Rememberizer 作为服务提供者

  2. 设置 SAML 属性映射以匹配 Rememberizer 用户属性

  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(`无法 ${method} ${endpoint}: ${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 调用: {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 团队。
Previous向 Slack 发送消息的示例 Web 应用NextAPI 文档首页

Last updated 23 days ago