欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle AI應(yīng)用的LLM模型典型配置方法

 更新時(shí)間:2025年03月26日 09:01:55   作者:Alfred Zhao  
本文介紹了如何在同事的開(kāi)源項(xiàng)目Text2SQLRAG中配置Embedding模型,并詳細(xì)描述了測(cè)試和配置DeepSeek的LLM的過(guò)程,感興趣的朋友一起看看吧

1.配置Embedding模型

在同事Hysun的Text2SQL RAG開(kāi)源項(xiàng)目中,提供了一些非常實(shí)用的配置方法,方便大家使用,本文就以此開(kāi)源項(xiàng)目為例。

我這里Embedding模型暫時(shí)選擇的是 SiliconFlow 平臺(tái)提供的 BAAI/bge-large-zh-v1.5 這個(gè)模型:

--使用 SiliconFlow Embedding:
BEGIN
  CUSTOM_SELECT_AI.CREATE_EMBEDDING_CONF(
        p_conf_id     =>    'EMBEDDING',
		p_provider    =>    'OpenAI',
        p_model       =>    'BAAI/bge-large-zh-v1.5',
		p_endpoint    =>    'https://api.siliconflow.cn/v1/embeddings',
		p_credential  =>    'ALFRED_SILICON_FLOW'
	);
END;
/

起初我直接把API Key寫(xiě)到了p_credential中,發(fā)現(xiàn)不行,但是換成自定義的ALFRED_SILICON_FLOW后,通過(guò)dbms_vector.create_credential導(dǎo)入時(shí),起初以為直接傳JSON格式的參數(shù),結(jié)果是不允許的。

另外,注意這里p_conf_id的名字,以后要用到,開(kāi)始我沒(méi)意識(shí)到,咨詢(xún)同事后才知曉這個(gè)對(duì)應(yīng)關(guān)系。后來(lái)同事為了大家更好理解,還修改了幫助文檔,明確做了提示。

2.特殊語(yǔ)法傳參JSON格式

翻閱官方文檔,找到這種特殊的語(yǔ)法,專(zhuān)門(mén)用于傳入JSON格式。

--特殊的語(yǔ)法,傳入JSON格式方法
declare
  jo json_object_t;
begin
  jo := json_object_t();
  jo.put('access_token', 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  dbms_vector.create_credential(
    credential_name   => 'ALFRED_SILICON_FLOW',
    params            => json(jo.to_string));
end;
/

API Key已脫敏,按照你的Key實(shí)際替換即可。

配置好之后,可以通過(guò)這張表查詢(xún)到:

select * from CUSTOM_SELECT_AI_EMBEDDING_CONF;

3.測(cè)試Embedding有效

使用提供的測(cè)試用例來(lái)測(cè)試Embedding有效性:

--EMBEDDING接口 - 文本轉(zhuǎn)向量
select CUSTOM_SELECT_AI.EMBEDDING(
    p_text => '將文本轉(zhuǎn)成向量',
    p_embedding_conf => 'EMBEDDING'
);

注意這個(gè)p_embedding_conf需要和之前創(chuàng)建時(shí)的p_conf_id對(duì)應(yīng),后面使用都有這個(gè)對(duì)應(yīng)關(guān)系,需要特別注意下。

測(cè)試返回報(bào)錯(cuò):

ORA-06502: PL/SQL:值或轉(zhuǎn)換錯(cuò)誤 :  字符串緩沖區(qū)太小
ORA-06512: 在 line 1

https://docs.oracle.com/error-help/db/ora-06502/06502. 00000 -  "PL/SQL: value or conversion error%s"
*Cause:    An arithmetic, numeric, string, conversion, or constraint error
           occurred. For example, this error occurs if you attempt to
           assign the value NULL to a variable declared NOT NULL, or if you
           attempt to assign an integer greater than 99 to a variable
           declared NUMBER(2).
*Action:   To resolve the issue, change the data, the way the data is
           manipulated, or the data variable declaration.
*Params:   1) error_info
           occurred.

4.修改MAX_STRING_SIZE

上面的報(bào)錯(cuò)很明顯,文檔中也有提到需要設(shè)置MAX_STRING_SIZE為EXTENDED才可以。
修改的參考步驟(生產(chǎn)環(huán)境請(qǐng)慎重評(píng)估可行性):

--1.查看參數(shù)當(dāng)前值
SHOW PARAMETER MAX_STRING_SIZE;
--2.設(shè)置MAX_STRING_SIZE=EXTENDED
ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=SPFILE;
--3.關(guān)閉數(shù)據(jù)庫(kù)
SHUTDOWN IMMEDIATE;
--4.啟動(dòng)upgrade模式,執(zhí)行腳本
STARTUP UPGRADE;
@$ORACLE_HOME/rdbms/admin/utl32k.sql
--5.重啟數(shù)據(jù)庫(kù)
SHUTDOWN IMMEDIATE;
STARTUP;
--6.查詢(xún)MAX_STRING_SIZE參數(shù)已修改
SHOW PARAMETER MAX_STRING_SIZE;

再次運(yùn)行Embedding測(cè)試用例,成功返回結(jié)果。

5.配置為DeepSeek的LLM

主要用到兩個(gè)CUSTOM_SELECT_AI.CREATE_PROVIDER、CUSTOM_SELECT_AI.CREATE_PROFILE。

----- Create service provider,deepseek
BEGIN
  CUSTOM_SELECT_AI.CREATE_PROVIDER(
		p_provider    =>    'OpenAI',
		p_endpoint    =>    'https://api.deepseek.com/chat/completions',
		p_auth        =>    'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
	);
END;
/
----- Create profile
BEGIN
	CUSTOM_SELECT_AI.CREATE_PROFILE(
      p_profile_name    =>'HKE_DEMO',
      p_description     => 'SelectAI DEMO for HKE',
      p_attributes      => '{
          "provider": "OpenAI",
          "model" : "deepseek-chat",
          "object_list": [{"owner": "TPCH", "name": "HKE_PROD_DEFECT"},
                          {"owner": "TPCH", "name": "HKE_PROD_OUT_YIELD_QTY"}
                          ]
      }'
    );
END;
/

創(chuàng)建好之后可以查詢(xún)到:

--創(chuàng)建好的PROVIDER和PROFILE可以查詢(xún)表:
select * from TPCH.CUSTOM_SELECT_AI_PROVIDERS;
select * from TPCH.CUSTOM_SELECT_AI_PROFILES;

配置錯(cuò)誤或不再需要,可以這樣刪除掉:

--刪除不再需要的PROVIDER和PROFILE:
BEGIN
  CUSTOM_SELECT_AI.DROP_PROVIDER(
		p_provider    =>    'OpenAI'
	);
END;
/
BEGIN
  CUSTOM_SELECT_AI.DROP_PROFILE(
		 p_profile_name    =>'HKE_DEMO'
	);
END;
/

6.測(cè)試Chat和Showsql有效

按照開(kāi)源項(xiàng)目文檔中的說(shuō)明,測(cè)試Chat和Showsql功能:

--CHAT接口 - 直接與 LLM 聊天
select CUSTOM_SELECT_AI.CHAT(
    p_profile_name  => 'HKE_DEMO',
    p_user_text     => '你是誰(shuí)?',
    p_system_text   => '你是一個(gè)積極的、充滿(mǎn)正能量的人工智能助手。'
);

注意:這里Chat配置好LLM應(yīng)該就可以正常返回,如果報(bào)錯(cuò)ORA-29273,如下圖所示:

  • 4-sys.utl_http.png

就需要放開(kāi)對(duì)應(yīng)數(shù)據(jù)庫(kù)用戶(hù)對(duì)具體或所有外部的訪(fǎng)問(wèn):

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',  -- 或者指定具體的域名,如 'api.example.com'
        ace  => xs$ace_type(privilege_list => xs$name_list('connect'),
                            principal_name => 'TPCH', 
                            principal_type => xs_acl.ptype_db));
END;
/

繼續(xù)測(cè)試Showsql功能:

--SHOWSQL接口 - 自然語(yǔ)言生成SQL
select CUSTOM_SELECT_AI.SHOWSQL(
  	p_profile_name => 'HKE_DEMO',
    p_embedding_conf => 'EMBEDDING',
  	p_user_text => '查詢(xún)符合條件的各YIELD小等級(jí)占比(即YIELD_QTY之和/OUT_QTY之和),條件為:公司名稱(chēng)為COMPANY1,工廠(chǎng)名稱(chēng)為FACTORYNAME1,產(chǎn)品名稱(chēng)為PRODUCT1。占比用百分比表示并排序,用中文別名返回。'
);

SHOWSQL需要按Demo要求導(dǎo)入成功表數(shù)據(jù)并向量化才OK。這里的p_embedding_conf要注意和之前配置的Embedding名字一樣。

到此這篇關(guān)于Oracle AI應(yīng)用的LLM模型典型配置的文章就介紹到這了,更多相關(guān)Oracle LLM模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論