如何使用 JavaScript 从 Oracle 数据库中调用 Cohere 和 Hugging Face AI
作者:互联网
在本文中,我将向您展示如何使用在免费的Oracle数据库中运行的JavaScript程序快速创建一个完全免费的应用程序,并调用Hugging Face AI,其结果存储在数据库中,然后可以使用SQL访问,JSON,REST或任何其他语言。所有源代码都可以在这里找到。
一般应用程序和AI应用程序的常见流程具体涉及调用AI服务的应用程序,然后将信息存储在数据库中,在那里可以进一步检索和处理(例如,使用OML)和/或稍后分析和查询。
通过从数据库本身发出命令,数据将立即存储,因此也更可靠,因为它正在处理中,并且不需要额外的网络调用来持久化。此外,通过将逻辑(甚至代码)驻留在数据库中,高可用性、管理、可观测性等。的 Oracle 数据库的强大功能可以隐式地和固有地加以利用。
最新的DZone参考卡
GitOps for Kubernetes
这是 Oracle 数据库的一项独特功能,因为它包含 Java,以及我们将在本博客中看到的数据库本身中的 JavaScript 运行时引擎。
Hugging Face开发使用机器学习构建应用程序的工具。它最引人注目的是其为自然语言处理应用程序构建的转换器库以及允许用户共享机器学习模型和数据集的平台。在过去的几年里,它变得非常流行。
简而言之,我们将执行以下操作:
- 创建帐户并选择模型。
- 创建 Oracle 数据库和数据库用户。
- 添加带有证书的钱包以允许 HTTPS 调用。
- 创建表。
- 在数据库中运行一个简短的 JavaScript 程序,以调用 Cohere 或 Hugging Face AI 模型,并将结果存储在表中。
- (可选)使用 SQL、JSON、REST 等查询这些结果。
设置凝聚帐户和 AI 模型
转到 Cohere 网站并注册。转到您的个人资料,然后单击设置按钮。
单击仪表板,然后单击 API 密钥。创建密钥(或使用试用版)并复制其值供以后使用。
单击“API 参考”,然后选择任何页面左侧的汉堡菜单/图标以查看 API 参考列表。选择一个。在这种情况下,我们将选择生成部分和Co.Generate。
选择“语言”,然后选择“JavaScript”选项,以查看用于调用模型的示例代码片段。
设置拥抱人脸帐户和AI模型
转到拥抱脸网站并注册。 转到您的个人资料,然后单击设置按钮。
单击“访问令牌”,创建令牌,然后复制其值供以后使用。
单击模型并选择一个模型。在这种情况下,我们将在“自然语言处理”部分下选择一个模型进行问答。
选择一个模型(可能是更流行的模型之一),注意左侧“模型卡”中的信息,然后选择右侧的“部署”下拉菜单。
选择推理 API,然后选择 JavaScript 选项以查看用于调用模型的示例代码片段。
设置甲骨文数据库
我们可以使用任何风格的Oracle数据库23c。在云上,我们可以在今年晚些时候使用Oracle始终免费的自治数据库,届时23c应该可用。我们可以使用现在可用的 Oracle 23c 免费版本,我们可以简单地在本地安装或使用容器映像。或者,当然,我们可以将本地用于开发,将云用于生产等。这两个选项中的任何一个都可以非常快速地设置。
甲骨文数据库免费选项
您可以转到此处设置Oracle Database Free 23c。
使用容器映像非常简单。您可以简单地执行下面的一行,替换为您选择的密码并替换为目录位置(或者如果您只希望拥有内存数据库,则完全省略它)。请注意允许从容器中调用的参数。这是 Mac 的设置,如果在不同的操作系统上运行,则会有所不同。-e ORACLE_PASSWORD=Welcome12345
-v oracle-volume:/somedirectory
--add-host docker.for.mac.host.internal:host-gateway
docker pull gvenzl/oracle-free ; docker run -d -p 1521:1521 --add-host docker.for.mac.host.internal:host-gateway -e ORACLE_PASSWORD=Welcome12345 gvenzl/oracle-free
设置 SQLcl(或数据库操作)并连接
您可以使用以下步骤安装 SQLcl 来管理数据库:
-
从此位置下载并安装。这将提供一个我们将用于管理数据库的可执行文件。为方便起见,您可以添加到您的 PATH 中。
[SQLcl_INSTALL_DIR]/bin/sql
[SQLcl_INSTALL_DIR]/bin
-
将登录名替换为 SQLcl 的位置,并替换为您在创建数据库时提供的位置。
[SQLcl_INSTALL_DIR]
Welcome12345
ORACLE_PASSWORD
以下是使用本地安装(例如,Oracle 数据库免费容器映像)时的示例:
壳1
[SQLcl_INSTALL_DIR]/bin/sql /nolog
2
SQL> connect sys@//localhost:1521/freepdb1 as sysdba
3
Password? (**********?) *************
4
Connected.
以下是使用云数据库(例如,Oracle Always Free Autonomous)时的一个例子:
.SQL1
[SQLcl_INSTALL_DIR]/bin/sql /nolog
2
SQL> set cloudconfig /Users/pparkins/Downloads/Wallet_xr.zip
3
SQL> connect admin@mydb_tp
4
Password? (**********?) *************
5
Connected.
6
创建具有适当权限的用户,这些权限将通过JavaScript调用Cohere和/或Hugging Face。
运行以下 SQL 文件以创建用户及其必要的授权和 ACL(请注意,可以进一步收紧这些授权和 ACL 以提高安全性)。aijs
SQL> @sql/create_aijs_user.sql
现在连接用户并创建一个表来存储对拥抱脸的调用结果:
SQL> connect aijs/Welcome12345;
SQL> create table huggingfacejson (id json);
SQL> create table coherejson (id json);
现在一切都准备好运行了!
从数据库中的 JavaScript 代码运行 Cohere 或拥抱人脸查询
凝聚力示例
SQL> @sql/coherequery.sql
L/SQL procedure successfully completed.
然后,通过执行 SQL 查询来检查存储在表中的 JSON 结果。
SQL> select * from coherejson;
[{"id":"1b42f8f9-ea6d-4a65-8f02-bdcf89d9bd79","generations":[{"id":"d6467c0b-4a78-4dd4-b822-c1e2bfa4ecb0","text":"\n LLMs or Large Language Models are artificial intelligence tools that can read, summarize and translate texts and"}],"prompt":"Please explain to me how LLMs work","meta":{"api_version":{"version":"1"}}}
查看我们刚刚执行的代码,我们可以看到创建的 JavaScript 模块和正在调用的函数:
create or replace mle module cohere_module language javascript as import "mle-js-fetch"; import "mle-js-oracledb"; export async function cohereDemo(apiToken) { if (apiToken === undefined) { throw Error("must provide an API token"); } const modelId = "generate"; const restAPI = `https://api.cohere.ai/v1/${modelId}`; const headers = { accept: 'application/json', 'content-type': 'application/json', "Authorization": `Bearer ${apiToken}` }; const payload = { max_tokens: 20, return_likelihoods: 'NONE', truncate: 'END', prompt: 'Please explain to me how LLMs work' }; const resp = await fetch( restAPI, { method: "POST", headers: headers, body: JSON.stringify(payload), credentials: "include" } ); const resp_json = await resp.json(); session.execute( `INSERT INTO COHEREJSON (id) VALUES (:resp_json)`, [ JSON.stringify(resp_json) ] ); } / create or replace procedure coherequery( p_API_token varchar2 ) as mle module cohere_module signature 'cohereDemo(string)'; / -- this is how you can test the API call begin utl_http.set_wallet('system:'); coherequery('[yourcoheretokenhere]'); end; /
拥抱脸示例
SQL> @sql/huggingfacequery.sql PL/SQL procedure successfully completed.
然后,通过执行 SQL 查询来检查存储在表中的 JSON 结果。
SQL> select * from huggingfacejson; [{"score":0.16964051127433777,"token":2053,"token_str":"no","sequence":"the answer to the universe is no."},{"score":0.07344779372215271,"token":2498,"token_str":"nothing","sequence":"the answer to the universe is nothing."},{"score":0.05803246051073074,"token":2748,"token_str":"yes","sequence":"the answer to the universe is yes."},{"score":0.043957971036434174,"token":4242,"token_str":"unknown","sequence":"the answer to the universe is unknown."},{"score":0.04015727713704109,"token":3722,"token_str":"simple","sequence":"the answer to the universe is simple."}]
查看我们刚刚执行的代码,我们可以看到创建的 JavaScript 模块和正在调用的函数:
create or replace mle module huggingface_module language javascript as import "mle-js-fetch"; import "mle-js-oracledb"; export async function huggingfaceDemo(apiToken) { if (apiToken === undefined) { throw Error("must provide an API token"); } const payload = { inputs: "The answer to the universe is [MASK]." }; const modelId = "bert-base-uncased"; const headers = { "Authorization": `Bearer ${apiToken}` }; const restAPI = `https://api-inference.huggingface.co/models/${modelId}`; const resp = await fetch( restAPI, { method: "POST", headers: headers, body: JSON.stringify(payload), credentials: "include" } ); const resp_json = await resp.json(); session.execute( `INSERT INTO HUGGINGFACEJSON (id) VALUES (:resp_json)`, [ JSON.stringify(resp_json) ] ); } / create or replace procedure huggingfacequery( p_API_token varchar2 ) as mle module huggingface_module signature 'huggingfaceDemo(string)'; / -- this is how you can test the API call begin utl_http.set_wallet('system:'); huggingfacequery('[hf_yourhuggingfacetokenhere]'); end; /
可以在此处找到有关拥抱面部的有用参数和调试信息。
现在可以查询、分析结果等。使用SQL或JSON(同时,由于新的JSON双重性功能),REST,甚至MongoDB API。
出于多种原因,Oracle 数据库适用于 AI,特别是因为它是一个矢量数据库,具有当今已经可用的以下功能:
- 矢量表示和存储的本机数据类型:RAW、BLOB、JSON
- 内存列存储,用于存储和搜索带有 SIMD 内核的矢量嵌入,以实现惊人的性能
- 可扩展的索引框架,用于创建特定于数据模型的索引(例如,文本、空间索引)
- 原生 Oracle 机器学习 API - 建模、分类、评分、聚类等
- DML、并行加载、分区、高级压缩、并行查询、RAC、分片等。
也可以从Oracle数据库中调用Oracle OCI AI和其他服务。
标签:JavaScript,Cohere,数据库 来源: