文章目录1.大模型目前存在的问题2.大模型后缀百科全书3.OpenAI库3.1 OpenAI库的基础使用3.2 OpenAI库的流式输出3.3 OpenAI库附带历史消息调用模型4. 提示词工程4.1 技巧5.GLM大模型调用的三种方式6.向量、向量数据库6.1 向量6.2 文本向量化(Embedding)6.2.1 在线转换百炼6.2.2 本地部署转换6.3 嵌入模型(EmbeddingModel)6.4 向量数据库(VectorStore)1.大模型目前存在的问题1幻觉①是指模型生成的内容看似合理但与实际严重不符的现象②形成原因:训练数据噪声模型从海量文本中学习但数据本身包含错误、偏见或虚构内容例如网络谣言、小说情节模型可能误将其视为真实知识。概率优先而非真实性大模型现在使用的是transformer架构模型目标是生成“最符合上下文概率分布”的文本而非追求事实正确性。当缺乏明确答案时模型倾向于用高频词汇或合理句式“填补空白”(做填词游戏)。③即使使用rag也只能减轻幻觉而不能根本消除幻觉2 LLM知识更新缓慢3LLM对领域知识的理解有限在一些较为浅显的领域大型语言模型可能通过之前的大量训练数据获得了相应的能力。但当涉及到更深层次的专业领域时这些模型往往会出现所谓的“幻觉”问题即生成的信息可能偏离事实或专业知识的真实性。形成原因训练数据的覆盖广度与深度矛盾(广度优先):LLM的训练数据覆盖全网公开文本书籍、网页、论文等但领域知识往往分布稀疏2.大模型后缀百科全书3.OpenAI库OpenAI库是OpenAI官方推出的Python SDK核心作用是让开发者能简单、高效地调用 OpenAI 的各类 API如 GPT 聊天、DALL・E 绘图、语音转文字等无需手动处理 HTTP 请求、身份验证等底层细节。由于其发布较早且比较易用现如今许多模型服务商如阿里云百炼平台均兼容OpenAI SDK的调用。3.1 OpenAI库的基础使用1Completions和ChatCompletionsChatCompletions实际上可以替换Completions①CompletionsimportosfromopenaiimportOpenAIimportosfromdotenvimportload_dotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))# 根据提示生成中文的文本resultclient.completions.create(modelqwen-coder-turbo,prompt讲5个笑话给小朋友听,max_tokens1000,temperature0.5,n2)print(result.choices[0].text)②ChatCompletionsfromopenaiimportOpenAIfromopenai.types.chat.chat_completionimportChatCompletionimportosfromdotenvimportload_dotenvfrompydantic_settings.sources.providersimportdotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))response:ChatCompletionclient.chat.completions.create(modelqwen3-max,messages[{role:system,content:你是一个Python编程专家。},{role:assistant,content:我是一个Python编程专家。请问有什么可以帮助您的吗},{role:user,content:for循环输出1到5的数字}])print(response.choices[0].message.content)2在chat 大语言模型中user、assistant、system 是三种核心角色它们的定位和功能不同共同构成对话的上下文结构。3.2 OpenAI库的流式输出可以设定结果输出为stream模式流式输出获得更好的使用体验。开启流式输出主要就2步在client.chat.completions.create()调用模型的时候设定参数streamTruefor循环response对象并在循环内输出内容fromopenaiimportOpenAIfromopenai.types.chat.chat_completionimportChatCompletionimportosfromdotenvimportload_dotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))response:ChatCompletionclient.chat.completions.create(modelqwen3-max,messages[{role:system,content:你是一个Python编程专家。},{role:assistant,content:我是一个Python编程专家。请问有什么可以帮助您的吗},{role:user,content:for循环输出1到5的数字}],streamTrue# 开启流式输出功能)forchunkinresponse:ifchunk.choices[0].delta.content:print(chunk.choices[0].delta.content,end,flushTrue)3.3 OpenAI库附带历史消息调用模型importosfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()clientOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))# chat completions ,交互式的API调用# 1、准备一个message同时这个message还要记录所有的聊天信息message[{role:system,content:你是一个无所不能的体育专家},{role:user,content:你好啊}]resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)# 添加上一轮模型回复的内容message.append({role:out_result.role,content:out_result.content})# 第二轮聊天new_chat{role:user,content:1.2024年的奥运会在哪个国家举行2.告诉我这个国家的首都是什么}message.append(new_chat)resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)new_chat{role:user,content:请问这个国家有多少人口}message.append(new_chat)resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)transformers提供模型、训练相关datasets提供数据集相关4. 提示词工程1提示工程Prompt Engineering也称为 In-Context Prompting是指在不更新模型权重的情况下如何与大模型交互以引导其行为以获得所需结果的方法。2在人工智能领域Prompt指的是用户给大型语言模型发出的指令。例如“「讲个笑话」”、“「用Python编个贪吃蛇游戏」”、“「写封情书」等。虽然看似简单但实际上Prompt的设计对于模型的结果影响很大。因此如何设计prompt进而与模型更好的交互是研究人员必备的必不可少的技能提示工程。4.1 技巧1技巧1详细的描述任何Prompt技巧都不如清晰的表达你的需求。这就类似人与人沟通如果话说不明白不可能让别人理解你的思想。因此写出清晰的指令是核心。2技巧2让模型充当某个角色3技巧3使用分隔符标明输入的不同部分中括号、XML标签、三引号等分隔符可以帮助划分要区别对待的文本也可以帮助模型更好的理解文本内容。常用三引号’‘’‘’把内容框起来。4技巧4对任务指定步骤对于可以拆分的任务可以尽量拆开最好能为其指定一系列步骤明确步骤可以让模型更容易实现它们。5提供例子本质类似于few-shot leaning。先扔给大模型举例然后让模型按照例子来输出5.GLM大模型调用的三种方式1GLM自己的APIpip install zhipuaifromdotenvimportload_dotenvfromzhipuaiimportZhipuAIimportos# 使用GLM自己的load_dotenv()api_keyos.getenv(API_KEY)clientZhipuAI(api_keyapi_key)responseclient.chat.completions.create(modelglm-4-0520,messages[{role:user,content:请介绍一下大模型的定义}],streamTrue)# 输出forsinresponse:contents.choices[0].delta.contentifcontent:print(content,end)2openai的API pip install openaifromdotenvimportload_dotenvfromopenaiimportOpenAIimportos# 使用OpenAI的APIload_dotenv()clientOpenAI(api_keyos.getenv(API_KEY),base_urlhttps://open.bigmodel.cn/api/paas/v4/)responseclient.chat.completions.create(modelglm-4-0520,messages[{role:user,content:北京天气怎么样}],)print(response.choices[0].message.content)3Langchain的API# 一次性安装所有相关包# pip install langchain langchain-openai langchainhub httpx_sse# 验证安装# python -c import langchain; print(langchain.__version__)fromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_classic.schemaimportHumanMessage,SystemMessage load_dotenv()importos# 创建 LLM 实例llmChatOpenAI(temperature0.7,modelglm-5,openai_api_keyos.getenv(API_KEY),openai_api_basehttps://open.bigmodel.cn/api/paas/v4/)# 创建消息messages[SystemMessage(content你是一个有用的 AI 助手),HumanMessage(content请介绍一下人工智能的发展历程)]# 调用模型responsellm.invoke(messages)print(response.content)6.向量、向量数据库6.1 向量1在数学中向量也称为欧几里得向量、几何向量指具有大小magnitude和方向的量。它可以形象化地表示为带箭头的线段。箭头所指代表向量的方向线段长度代表向量的大小。2在计算机中我们用数组来表述向量importnumpyasnp vnp.array([3,4])# 数组表示向量magnitudenp.linalg.norm(v)# 计算大小unit_vectorv/magnitude# 计算单位向量方向anglenp.arctan2(v[1],v[0])*180/np.pi# 角度度print(f大小:{magnitude})print(f单位向量 (方向):{unit_vector})print(f与x轴角度:{angle:.1f}°)3向量Vector就是文本的 “数学身份证”它把一段文字的语义信息转换成一串固定长度的数字列表让计算机能 “看懂” 文字的含义并做相似度计算。简单来说就是让计算机更方便的理解不同的文本内容是否表述的是一个意思。6.2 文本向量化(Embedding)1Embedding 是将文本字符串表示为向量浮点数列表通过计算向量之间的距离来衡量文本之间的相关性。向量距离越小表示文本之间的相关性越高距离越大相关性越低。2常见的 Embedding 应用包括搜索根据文本查询的相关性对结果进行排序聚类根据文本相似性将其分组推荐根据相关文本字符串推荐项目异常检测识别与其他内容相关性较低的异常点多样性测量分析相似性分布分类将文本字符串根据其最相似的标签进行分类6.2.1 在线转换百炼1DashScope方式2OpenAI方式3注意model选择文本向量即可6.2.2 本地部署转换1在网址中找到自己需要的文本向量模型Huggingfacehttps://huggingface.co/Hugging Face 是一个专注于机器学习尤其是自然语言处理NLP的开源平台和社区提供从模型开发、训练、部署到共享的一站式工具和资源国内的镜像地址https://hf-mirror.com/魔搭社区https://www.modelscope.cn/my/overview2使用魔塔将模型下载到本地执行该代码即可frommodelscopeimportsnapshot_download# cache_dir下载地址model_dirsnapshot_download(BAAI/bge-large-zh-v1.5,cache_dirD:\BaiduNetdiskDownload\pythonNote\TuLing\DaMoXing\LLM)3转换代码# pip install sentence-transformers# 用来加载模型,并使用模型生成向量fromsentence_transformersimportSentenceTransformer# 替换为实际路径model_pathrD:\BaiduNetdiskDownload\pythonNote\TuLing\DaMoXing\LLM\BAAI\bge-large-zh-v1___5modelSentenceTransformer(model_path)sentences[你好,你]# 生成向量默认返回numpy数组embeddingsmodel.encode(sentences)print(embeddings)print(embeddings.shape)# 输出: (2, 1024) 维度取决于模型6.3 嵌入模型(EmbeddingModel)嵌入模型(EmbeddingModel)是嵌入过程中采用的模型。当前EmbeddingModel的接口主要用于将文本转换为数值向量接口的设计主要围绕这两个目标展开:1可移植性:该接口确保在各种嵌入模型之间的轻松适配。它允许开发者在不同的嵌入技术或模型之间切换所需的代码更改最小化。这一设计与Spring模块化和互换性的理念一致。2简单性:嵌入模型简化了文本转换为嵌入的过程。通过提供如embed(stringtext)和embed(Documentdocument)这样简单的方法它去除了处理原始文本数据和嵌入算法的复杂性。这个设计选择使开发者尤其是那些初次接触AI的开发者更容易在他们的应用程序中使用嵌入而无需深入了解其底层机制。6.4 向量数据库(VectorStore)1向量数据库是一种专门用于存储、管理和检索向量数据即高维数值数组的数据库系统。2其核心功能是通过高效的索引结构和相似性计算算法支持大规模向量数据的快速查询与分析向量数据库维度越高查询精准度也越高查询效果也越好。3常见的向量数据库4chromadb演示chroma学习https://zhuanlan.zhihu.com/p/680661442importchromadb# 连接向量数据库默认存储在内存中# client chromadb.Client()# 持久化存储path地址# 存储使用的是sqlite3clientchromadb.PersistentClient(path./chroma_db)# get_or_create_collection 如果有集合则返回,没有则创建cllclient.get_or_create_collection(nametest)
大模型入门、向量数据库
文章目录1.大模型目前存在的问题2.大模型后缀百科全书3.OpenAI库3.1 OpenAI库的基础使用3.2 OpenAI库的流式输出3.3 OpenAI库附带历史消息调用模型4. 提示词工程4.1 技巧5.GLM大模型调用的三种方式6.向量、向量数据库6.1 向量6.2 文本向量化(Embedding)6.2.1 在线转换百炼6.2.2 本地部署转换6.3 嵌入模型(EmbeddingModel)6.4 向量数据库(VectorStore)1.大模型目前存在的问题1幻觉①是指模型生成的内容看似合理但与实际严重不符的现象②形成原因:训练数据噪声模型从海量文本中学习但数据本身包含错误、偏见或虚构内容例如网络谣言、小说情节模型可能误将其视为真实知识。概率优先而非真实性大模型现在使用的是transformer架构模型目标是生成“最符合上下文概率分布”的文本而非追求事实正确性。当缺乏明确答案时模型倾向于用高频词汇或合理句式“填补空白”(做填词游戏)。③即使使用rag也只能减轻幻觉而不能根本消除幻觉2 LLM知识更新缓慢3LLM对领域知识的理解有限在一些较为浅显的领域大型语言模型可能通过之前的大量训练数据获得了相应的能力。但当涉及到更深层次的专业领域时这些模型往往会出现所谓的“幻觉”问题即生成的信息可能偏离事实或专业知识的真实性。形成原因训练数据的覆盖广度与深度矛盾(广度优先):LLM的训练数据覆盖全网公开文本书籍、网页、论文等但领域知识往往分布稀疏2.大模型后缀百科全书3.OpenAI库OpenAI库是OpenAI官方推出的Python SDK核心作用是让开发者能简单、高效地调用 OpenAI 的各类 API如 GPT 聊天、DALL・E 绘图、语音转文字等无需手动处理 HTTP 请求、身份验证等底层细节。由于其发布较早且比较易用现如今许多模型服务商如阿里云百炼平台均兼容OpenAI SDK的调用。3.1 OpenAI库的基础使用1Completions和ChatCompletionsChatCompletions实际上可以替换Completions①CompletionsimportosfromopenaiimportOpenAIimportosfromdotenvimportload_dotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))# 根据提示生成中文的文本resultclient.completions.create(modelqwen-coder-turbo,prompt讲5个笑话给小朋友听,max_tokens1000,temperature0.5,n2)print(result.choices[0].text)②ChatCompletionsfromopenaiimportOpenAIfromopenai.types.chat.chat_completionimportChatCompletionimportosfromdotenvimportload_dotenvfrompydantic_settings.sources.providersimportdotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))response:ChatCompletionclient.chat.completions.create(modelqwen3-max,messages[{role:system,content:你是一个Python编程专家。},{role:assistant,content:我是一个Python编程专家。请问有什么可以帮助您的吗},{role:user,content:for循环输出1到5的数字}])print(response.choices[0].message.content)2在chat 大语言模型中user、assistant、system 是三种核心角色它们的定位和功能不同共同构成对话的上下文结构。3.2 OpenAI库的流式输出可以设定结果输出为stream模式流式输出获得更好的使用体验。开启流式输出主要就2步在client.chat.completions.create()调用模型的时候设定参数streamTruefor循环response对象并在循环内输出内容fromopenaiimportOpenAIfromopenai.types.chat.chat_completionimportChatCompletionimportosfromdotenvimportload_dotenv load_dotenv()client:OpenAIOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))response:ChatCompletionclient.chat.completions.create(modelqwen3-max,messages[{role:system,content:你是一个Python编程专家。},{role:assistant,content:我是一个Python编程专家。请问有什么可以帮助您的吗},{role:user,content:for循环输出1到5的数字}],streamTrue# 开启流式输出功能)forchunkinresponse:ifchunk.choices[0].delta.content:print(chunk.choices[0].delta.content,end,flushTrue)3.3 OpenAI库附带历史消息调用模型importosfromopenaiimportOpenAIfromdotenvimportload_dotenv load_dotenv()clientOpenAI(base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,api_keyos.getenv(DASHSCOPE_API_KEY))# chat completions ,交互式的API调用# 1、准备一个message同时这个message还要记录所有的聊天信息message[{role:system,content:你是一个无所不能的体育专家},{role:user,content:你好啊}]resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)# 添加上一轮模型回复的内容message.append({role:out_result.role,content:out_result.content})# 第二轮聊天new_chat{role:user,content:1.2024年的奥运会在哪个国家举行2.告诉我这个国家的首都是什么}message.append(new_chat)resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)new_chat{role:user,content:请问这个国家有多少人口}message.append(new_chat)resultclient.chat.completions.create(modelqwen3-max,messagesmessage)out_resultresult.choices[0].messageprint(out_result.content)transformers提供模型、训练相关datasets提供数据集相关4. 提示词工程1提示工程Prompt Engineering也称为 In-Context Prompting是指在不更新模型权重的情况下如何与大模型交互以引导其行为以获得所需结果的方法。2在人工智能领域Prompt指的是用户给大型语言模型发出的指令。例如“「讲个笑话」”、“「用Python编个贪吃蛇游戏」”、“「写封情书」等。虽然看似简单但实际上Prompt的设计对于模型的结果影响很大。因此如何设计prompt进而与模型更好的交互是研究人员必备的必不可少的技能提示工程。4.1 技巧1技巧1详细的描述任何Prompt技巧都不如清晰的表达你的需求。这就类似人与人沟通如果话说不明白不可能让别人理解你的思想。因此写出清晰的指令是核心。2技巧2让模型充当某个角色3技巧3使用分隔符标明输入的不同部分中括号、XML标签、三引号等分隔符可以帮助划分要区别对待的文本也可以帮助模型更好的理解文本内容。常用三引号’‘’‘’把内容框起来。4技巧4对任务指定步骤对于可以拆分的任务可以尽量拆开最好能为其指定一系列步骤明确步骤可以让模型更容易实现它们。5提供例子本质类似于few-shot leaning。先扔给大模型举例然后让模型按照例子来输出5.GLM大模型调用的三种方式1GLM自己的APIpip install zhipuaifromdotenvimportload_dotenvfromzhipuaiimportZhipuAIimportos# 使用GLM自己的load_dotenv()api_keyos.getenv(API_KEY)clientZhipuAI(api_keyapi_key)responseclient.chat.completions.create(modelglm-4-0520,messages[{role:user,content:请介绍一下大模型的定义}],streamTrue)# 输出forsinresponse:contents.choices[0].delta.contentifcontent:print(content,end)2openai的API pip install openaifromdotenvimportload_dotenvfromopenaiimportOpenAIimportos# 使用OpenAI的APIload_dotenv()clientOpenAI(api_keyos.getenv(API_KEY),base_urlhttps://open.bigmodel.cn/api/paas/v4/)responseclient.chat.completions.create(modelglm-4-0520,messages[{role:user,content:北京天气怎么样}],)print(response.choices[0].message.content)3Langchain的API# 一次性安装所有相关包# pip install langchain langchain-openai langchainhub httpx_sse# 验证安装# python -c import langchain; print(langchain.__version__)fromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_classic.schemaimportHumanMessage,SystemMessage load_dotenv()importos# 创建 LLM 实例llmChatOpenAI(temperature0.7,modelglm-5,openai_api_keyos.getenv(API_KEY),openai_api_basehttps://open.bigmodel.cn/api/paas/v4/)# 创建消息messages[SystemMessage(content你是一个有用的 AI 助手),HumanMessage(content请介绍一下人工智能的发展历程)]# 调用模型responsellm.invoke(messages)print(response.content)6.向量、向量数据库6.1 向量1在数学中向量也称为欧几里得向量、几何向量指具有大小magnitude和方向的量。它可以形象化地表示为带箭头的线段。箭头所指代表向量的方向线段长度代表向量的大小。2在计算机中我们用数组来表述向量importnumpyasnp vnp.array([3,4])# 数组表示向量magnitudenp.linalg.norm(v)# 计算大小unit_vectorv/magnitude# 计算单位向量方向anglenp.arctan2(v[1],v[0])*180/np.pi# 角度度print(f大小:{magnitude})print(f单位向量 (方向):{unit_vector})print(f与x轴角度:{angle:.1f}°)3向量Vector就是文本的 “数学身份证”它把一段文字的语义信息转换成一串固定长度的数字列表让计算机能 “看懂” 文字的含义并做相似度计算。简单来说就是让计算机更方便的理解不同的文本内容是否表述的是一个意思。6.2 文本向量化(Embedding)1Embedding 是将文本字符串表示为向量浮点数列表通过计算向量之间的距离来衡量文本之间的相关性。向量距离越小表示文本之间的相关性越高距离越大相关性越低。2常见的 Embedding 应用包括搜索根据文本查询的相关性对结果进行排序聚类根据文本相似性将其分组推荐根据相关文本字符串推荐项目异常检测识别与其他内容相关性较低的异常点多样性测量分析相似性分布分类将文本字符串根据其最相似的标签进行分类6.2.1 在线转换百炼1DashScope方式2OpenAI方式3注意model选择文本向量即可6.2.2 本地部署转换1在网址中找到自己需要的文本向量模型Huggingfacehttps://huggingface.co/Hugging Face 是一个专注于机器学习尤其是自然语言处理NLP的开源平台和社区提供从模型开发、训练、部署到共享的一站式工具和资源国内的镜像地址https://hf-mirror.com/魔搭社区https://www.modelscope.cn/my/overview2使用魔塔将模型下载到本地执行该代码即可frommodelscopeimportsnapshot_download# cache_dir下载地址model_dirsnapshot_download(BAAI/bge-large-zh-v1.5,cache_dirD:\BaiduNetdiskDownload\pythonNote\TuLing\DaMoXing\LLM)3转换代码# pip install sentence-transformers# 用来加载模型,并使用模型生成向量fromsentence_transformersimportSentenceTransformer# 替换为实际路径model_pathrD:\BaiduNetdiskDownload\pythonNote\TuLing\DaMoXing\LLM\BAAI\bge-large-zh-v1___5modelSentenceTransformer(model_path)sentences[你好,你]# 生成向量默认返回numpy数组embeddingsmodel.encode(sentences)print(embeddings)print(embeddings.shape)# 输出: (2, 1024) 维度取决于模型6.3 嵌入模型(EmbeddingModel)嵌入模型(EmbeddingModel)是嵌入过程中采用的模型。当前EmbeddingModel的接口主要用于将文本转换为数值向量接口的设计主要围绕这两个目标展开:1可移植性:该接口确保在各种嵌入模型之间的轻松适配。它允许开发者在不同的嵌入技术或模型之间切换所需的代码更改最小化。这一设计与Spring模块化和互换性的理念一致。2简单性:嵌入模型简化了文本转换为嵌入的过程。通过提供如embed(stringtext)和embed(Documentdocument)这样简单的方法它去除了处理原始文本数据和嵌入算法的复杂性。这个设计选择使开发者尤其是那些初次接触AI的开发者更容易在他们的应用程序中使用嵌入而无需深入了解其底层机制。6.4 向量数据库(VectorStore)1向量数据库是一种专门用于存储、管理和检索向量数据即高维数值数组的数据库系统。2其核心功能是通过高效的索引结构和相似性计算算法支持大规模向量数据的快速查询与分析向量数据库维度越高查询精准度也越高查询效果也越好。3常见的向量数据库4chromadb演示chroma学习https://zhuanlan.zhihu.com/p/680661442importchromadb# 连接向量数据库默认存储在内存中# client chromadb.Client()# 持久化存储path地址# 存储使用的是sqlite3clientchromadb.PersistentClient(path./chroma_db)# get_or_create_collection 如果有集合则返回,没有则创建cllclient.get_or_create_collection(nametest)