乐于分享
好东西不私藏

VFP AI 插件开发花絮10:知识库检索

VFP AI 插件开发花絮10:知识库检索

搞定JSON对象的解析,对 VFP AI 插件来说,就算是搞定了基础工程。
之前介绍了知识库的一些基础,如VFP AI 插件开发花絮8:知识库基础VFP开发者如何构建自己的知识库,介绍了一些基本使用的工具软件和交互操作。但是,我们需要程序化的使用知识库,以用于 VFP AI 插件或其他应用程序,所以,构建了 AnythingLLM.VCX 库,编译为多线程DLL。
下面是其使用示例:
Clear Set Classlib To AnythingLLM.VCX*!* ==========================================*!* AnythingLLMManager 使用示例*!* ==========================================#DEFINE API_KEY		[BSVBF9K-ZB948M5-JQWYQSR-X77F0TP]#DEFINE ServerURL	[http://127.0.0.1:3001]#DEFINE ExePath		[C:\Users\niuji\AppData\Local\Programs\AnythingLLM\AnythingLLM.exe]Local loObj As AnythingLLMManager of AnythingLLM.VCXm.loObj = CreateObject([AnythingLLMManager], API_KEY, .T.)With m.loObj	.cServerUrl	= ServerURL	.cExePath	= ExePathEndWith*!* 1. 判断服务是否启动If m.loObj.IsRunning()	? [AnythingLLM 已启动]Else	? [AnythingLLM 未启动]	? [错误码:] + Transform(m.loObj.nLastErrorCode)	? [错误消息:] + m.loObj.cLastError	?	*!* 2. 启动服务	If m.loObj.Start(30)		? "AnythingLLM 启动成功!"	Else 		? "AnythingLLM 启动失败!"	EndIf EndIf *!* 3. 获取工作区的 slug?? "默认工作区 Slug:" + m.loObj.ListAllWorkSpaces()?? "默认工作区名称:"  + m.loObj.cWorkSpace? "默认工作区 Slug:" + m.loObj.cWorkspaceSlug?*!* 4. 预热知识库If m.loObj.Warmup()	? "知识库预热成功!"Else 	? "知识库预热失败!"EndIf ?*!* 5. 知识库检索m.loJSON = m.loObj.VectorSearch([VFP是什么?], 2)? "片段数:"	+ Transform(m.lojson.results.length )? "标题:"		+ m.lojson.results.Item(0).metadata.title? "相似度:"	+ Transform(m.lojson.results.Item(0).score)? "内容:"		+ Leftc(STREXTRACT(m.loJSON.results.Item(0).text, '</document_metadata>'''12), 300+ "......"?? "标题:"		+ m.lojson.results.Item(1).metadata.title? "相似度:"	+ Transform(m.lojson.results.Item(1).score)? "内容:"		+ Leftc(STREXTRACT(m.loJSON.results.Item(1).text, '</document_metadata>'''12), 300+ "......"
输出结果:
todo:
除了知识库检索,可以将其扩展为真正的 AnythingLLM Manager,用于程序化的完全控制 AnythingLLM 。例如:聊天、使用其内置的智能体完成如 Web Search 等工作。
如果你喜欢,可留言/私信/私聊,按原样有偿共享。