打造智能语料库:通过Coco AI Server 实现 Notion 笔记 RAG 检索功能

news2025/4/16 15:07:36

本文将详细介绍如何将 Notion 作为语料库,部署 Coco Server 的 RAG(Retrieval-Augmented Generation)功能。我们将使用 Easysearch 作为语料库存储 Notion 素材,并通过 ollama 进行 LLM 推理。

1. 环境准备

1.1 启动 Easysearch

首先,启动 Easysearch 作为语料库,用于存储 Notion 的素材。

1.2 启动 ollama

接下来,启动 ollama,用于进行 LLM 推理。

1.3 启动 CoCo Server

启动 CoCo Server,默认端口为 9000。

OLLAMA_MODEL=deepseek-r1:1.5b ES_PASSWORD=45ff432a5428ade77c7b   ./coco-mac-arm64

CoCo Server 启动界面

2. CoCo App 连接与登录

2.1 连接 CoCo Server

通过 CoCo App 连接 Server,并输入相关信息。

CoCo App 连接界面

2.2 使用 GitHub 登录

登录时选择使用 GitHub 账号进行认证。

GitHub 登录界面

2.3 获取 OAuth 回调信息

登录成功后,系统会重定向并返回 OAuth 回调信息。我们需要抓取以下信息,后续将使用该 token 换取访问 CoCo Server AI 的 key:

coco://oauth_callback?code=cupibub55o1cfqbveps0q804ai6aj14in3u91xjhvuk8s7ixirjsq2j9mmyyeut91nmgjwz0b494ngpk&request_id=eb94762b-f054-4710-9c6cf20889d3&provider=coco-cloud

OAuth 回调信息

3. 认证流程

3.1 获取临时 Token

首先,访问以下 URL 获取临时 Token:

http://localhost:9000/sso/login/github?provider=coco-cloud&product=coco&request_id=dd9825e1-ebd3-4c84-9e3f-7ccb0421c508

该请求将返回一个临时 Token。

3.2 换取 Access Token

使用上一步获取的临时 Token,通过以下命令换取 Access Token:

curl -H'X-API-TOKEN: <token>' "http://localhost:9000/auth/request_access_token?request_id=dd9825e1-ebd3-4c84-9e3f-7ccb0421c508"

返回的 Token 即为所需的 Access Token。

3.3 使用 Postman 获取 Token

在 Postman 中执行上述步骤,获取 access_token 和过期时间。

Postman 获取 Token

4. 使用 Python 脚本自动化认证流程

以下 Python 脚本可用于自动化解析 OAuth 回调信息并获取 Access Token:

import requests

def parse_oauth_callback(url):
    query_params = {param.split('=')[0]: param.split('=')[1] for param in url.split('?')[1].split('&')}
    code = query_params.get("code")
    request_id = query_params.get("request_id")
    return code, request_id

def request_access_token(code, base_url, request_id):
    url = f"{base_url}/auth/request_access_token?request_id={request_id}"
    headers = {"X-API-TOKEN": code}
    response = requests.get(url, headers=headers)
    return response.json()

# 示例输入
oauth_callback_url = """
coco://oauth_callback?code=cupibub55o1cfqbveps0q804ai6aj151wu4in3u91xjhvuk8s7ixirjsq2j9mmyyeut91nmgjwz0b494ngpk&request_id=eb94762b-f054-4710-9c6a-0cf2088729d3&provider=coco-cloud
"""
base_url = "http://localhost:9000"

# 解析 code 和 request_id
code, request_id = parse_oauth_callback(oauth_callback_url)

# 发送请求
token_response = request_access_token(code, base_url, request_id)
print(token_response)

5. 查看用户信息

使用获取的 access_key 可以查看用户信息:

import requests

url = "http://localhost:9000/account/profile"

payload = {}
headers = {
  'X-API-TOKEN': 'cupichb55o1cfqbveq90zwomyxs791ul3esbxxt480c8dzgvdtjtvmcnsld4a5v0wvx9l9ofcf1'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

6. 注册 Notion Connector

以下 Python 脚本用于注册 Notion Connector:

import requests
import json

def update_connector(base_url, api_token, connector_name, data):
    url = f"{base_url}/connector/{connector_name}?replace=true"
    headers = {
        "X-API-TOKEN": api_token,
        "Content-Type": "application/json"
    }
    response = requests.put(url, headers=headers, data=json.dumps(data))
    return response.json()

base_url = "http://localhost:9000"
api_token = "<token>"

notion_data = {
    "name": "Notion Docs Connector",
    "description": "Fetch the docs metadata for notion.",
    "icon": "/assets/connector/notion/icon.png",
    "category": "website",
    "tags": ["docs", "notion", "web"],
    "url": "http://coco.rs/connectors/notion",
    "assets": {
        "icons": {
            "default": "/assets/connector/notion/icon.png",
            "web_page": "/assets/connector/notion/icon.png",
            "database": "/assets/connector/notion/database.png",
            "page": "/assets/connector/notion/page.png"
        }
    }
}

response_notion = update_connector(base_url, api_token, "notion", notion_data)
print(response_notion)

在Easysearch中看到创建Notion的Connector:

image.png

7. 配置 Notion Connector

7.1 修改 Notion 配置文件

修改 Notion 配置文件以激活检索功能:

Notion 配置文件修改

7.2 申请 Notion API Key

在 Notion 官网申请 API Key:Notion API Key

Notion API Key 申请

7.3 配置权限与展示 API Key

配置完成后,设置权限并展示 API Key:

Notion API Key 展示

7.4 配置 Notion Connector

使用以下 Python 脚本配置 Notion Connector:

import requests
import json

def create_datasource(base_url, api_token, data):
    url = f"{base_url}/datasource/"
    headers = {
        "X-API-TOKEN": api_token,
        "Content-Type": "application/json"
    }
    response = requests.post(url, headers=headers, data=json.dumps(data))
    return response.json()

# 示例输入
base_url = "http://localhost:9000"
api_token = "<api-key>"

datasource_data = {
    "name": "My Notion",
    "type": "connector",
    "connector": {
        "id": "notion",
        "config": {
            "token": "<notion token>"
        }
    }
}

# 发送 POST 请求
response = create_datasource(base_url, api_token, datasource_data)
print(response)

在Easysearch中会创建coco相关的索引:image-20250217213901662

7.5 设置 Notion 集成

在 Notion 中设置集成,以便 CoCo Server 能够搜索到相关内容:

Notion 集成设置

8. 验证检索功能

在 coco_document 中可以看到notion的文档:

8.1 查看 CoCo Server 日志

在 CoCo Server 日志中确认 Notion 检索功能已启用:

CoCo Server 日志

8.2 在搜索栏检索

最后,您可以在搜索栏中检索到 Notion 笔记内容:

Notion 检索结果

至此,您已成功将 Notion 作为语料库部署到 CoCo Server 的 RAG 功能中。


我们详细介绍了如何将 Notion 作为语料库,部署 Coco Server 的 RAG 功能。从环境准备到认证流程,再到配置 Notion Connector 和验证检索功能,每一步都进行了详细的说明和操作演示。希望本文能帮助您顺利实现 Notion 与 Coco Server 的集成,提升您的知识管理和检索效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2300541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SP字体UI放大代码

代码&#xff1a; echo off set QT_SCALE_FACTOR放大倍数 start "" "你的SP.exe启动路径"

动手学Agent——Day2

文章目录 一、用 Llama-index 创建 Agent1. 测试模型2. 自定义一个接口类3. 使用 ReActAgent & FunctionTool 构建 Agent 二、数据库对话 Agent1. SQLite 数据库1.1 创建数据库 & 连接1.2 创建、插入、查询、更新、删除数据1.3 关闭连接建立数据库 2. ollama3. 配置对话…

「软件设计模式」适配器模式(Adapter)

软件设计模式深度解析&#xff1a;适配器模式&#xff08;Adapter&#xff09;&#xff08;C实现&#xff09; 一、模式概述 适配器模式&#xff08;Adapter Pattern&#xff09;是结构型设计模式中的"接口转换器"&#xff0c;它像现实世界中的电源适配器一样&#…

Dify平台搭建面试机器人

无代码搭建面试机器人 什么是Dify 什么是Dify Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员&#xff0c;也能…

如何通过AI轻松制作PPT?让PPT一键生成变得简单又高效

如何通过AI轻松制作PPT&#xff1f;让PPT一键生成变得简单又高效&#xff01;在这个信息化飞速发展的时代&#xff0c;PPT已经成为我们日常工作、学习和生活中不可或缺的一部分。无论是公司会议、学术报告&#xff0c;还是个人展示&#xff0c;PPT的作用都不容忽视。很多人对于…

从零开始部署DeepSeek:基于Ollama+Flask的本地化AI对话系统

从零开始部署DeepSeek&#xff1a;基于OllamaFlask的本地化AI对话系统 一、部署背景与工具选型 在AI大模型遍地开花的2025年&#xff0c;DeepSeek R1凭借其出色的推理能力和开源特性成为开发者首选。本文将以零基础视角&#xff0c;通过以下工具链实现本地化部署&#xff1a; …

STM32 CubeMx配置串口收发使用DMA并调用Idle模式(二)

本篇主要结合代码落实&#xff0c;之前串口已经配置好的DMA方式。 一、首先我们把串口看成一个对象&#xff0c;它有属性、私有数据和方法&#xff1b; 每个串口都有名字属性&#xff1b;有初始化、发送、接收方法&#xff1b;还有一个私有数据&#xff08;这个私有数据是每个…

使用Redis实现分布式锁,基于原本单体系统进行业务改造

一、单体系统下&#xff0c;使用锁机制实现秒杀功能&#xff0c;并限制一人一单功能 1.流程图&#xff1a; 2.代码实现&#xff1a; Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderSe…

Nginx内存池源代码剖析----ngx_create_pool函数

ngx_create_pool 是 Nginx 内存池 的初始化函数&#xff0c;负责创建并初始化一个内存池对象。它的作用是 为后续的内存分配操作提供统一的管理入口&#xff0c;通过预分配一块较大的内存区域&#xff0c;并基于此区域实现高效的内存分配、对齐管理和资源回收。 源代码定义&…

DeepSeek 开放平台无法充值 改用其他平台API调用DeepSeek-chat模型方法

近几天DeepSeek开放平台无法充值目前已经关闭状态&#xff0c;大家都是忙着接入DeepSeek模型 &#xff0c;很多人想使用DeepSeek怎么办&#xff1f; 当然还有改用其他平台API调用方法&#xff0c;本文以本站的提供chatgpt系统为例&#xff0c;如何修改DeepSeek-chat模型API接口…

QT基础一、学会建一个项目

注&#xff1a;因为CSDN有很多付费才能吃到的史&#xff0c;本人对此深恶痛绝&#xff0c;所以我打算出一期免费的QT基础入门专栏&#xff0c;这是QT基础知识的第一期&#xff0c;学会建一个项目&#xff0c;本专栏是适用于c / c基础不错的朋友的一个免费专栏&#xff0c;接下来…

科技引领未来,中建海龙C-MiC 2.0技术树立模块化建筑新标杆

在建筑行业追求高效与品质的征程中&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;以其卓越的创新能力和强大的技术实力&#xff0c;不断书写着装配式建筑领域的新篇章。1 月 10 日&#xff0c;由深圳安居集团规划&#xff0c;中建海龙与中海建筑共…

解锁养生秘籍,拥抱健康生活

在这个快节奏的时代&#xff0c;人们行色匆匆&#xff0c;常常在忙碌中忽略了健康。其实&#xff0c;养生并非遥不可及&#xff0c;它就藏在生活的细微之处&#xff0c;等待我们去发现和实践。 规律作息是健康的基础。日出而作&#xff0c;日落而息&#xff0c;顺应自然规律&am…

STM32 如何使用DMA和获取ADC

目录 背景 ‌摇杆的原理 程序 端口配置 ADC 配置 DMA配置 背景 DMA是一种计算机技术&#xff0c;允许某些硬件子系统直接访问系统内存&#xff0c;而不需要中央处理器&#xff08;CPU&#xff09;的介入&#xff0c;从而减轻CPU的负担。我们可以通过DMA来从外设&#xf…

细胞计数专题 | LUNA-FX7™新自动对焦算法提高极低细胞浓度下的细胞计数准确性

现代细胞计数仪采用自动化方法&#xff0c;在特定浓度范围内进行细胞计数。其上限受限于在高浓度条件下准确区分细胞边界的能力&#xff0c;而相机视野等因素则决定了下限。在图像中仅包含少量可识别细胞或特征的情况下&#xff0c;自动对焦可能会失效&#xff0c;从而影响细胞…

蓝桥杯备考:贪心算法之纪念品分组

P1094 [NOIP 2007 普及组] 纪念品分组 - 洛谷 这道题我们的贪心策略就是每次找出最大的和最小的&#xff0c;如果他们加起来不超过我们给的值&#xff0c;就分成一组&#xff0c;如果超过了&#xff0c;就把大的单独成一组&#xff0c;小的待定 #include <iostream> #i…

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化&#xff1a; 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…

尚硅谷爬虫note008

一、handler处理器 定制更高级的请求头 # _*_ coding : utf-8 _*_ # Time : 2025/2/17 08:55 # Author : 20250206-里奥 # File : demo01_urllib_handler处理器的基本使用 # Project : PythonPro17-21# 导入 import urllib.request from cgitb import handler# 需求&#xff…

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F

「AXVU13F」Virtex UltraScale XCVU13P Jetson Orin NX 继发布 AMD Virtex UltraScale FPGA PCIE3.0 开发平台 AXVU13P 后&#xff0c;ALINX 进一步研究尖端应用市场&#xff0c;面向 AI 场景进行优化设计&#xff0c;推出 AXVU13F。 AXVU13F 和 AXVU13P 采用相同的 AMD Vir…