当前位置: 首页 > news >正文

LangChain的embeddings结合向量数据库Weaviate接入ChatGPT-4、智普和通义千问

LangChain的embeddings结合向量数据库Weaviate接入ChatGPT-4、智普和通义千问

注意:

1.如果要使用nltk需要翻墙,如果只是使用中文分词,不需要翻墙。
2.不知道怎么安装和部署向量数据库Weaviate,可以看安装和部署向量数据库Weaviate
3.不知道怎么使用向量数据库weaviate,可以参考向量数据库weaviate,Python Client v4一些简单使用
4.不知道怎么写中文分词器,可以参考中文分词器jieba结合LangChain

import re
from typing import Sequence, List, Unionimport chardet
import nltk
import weaviate
from langchain.docstore.document import Document
from langchain.text_splitter import NLTKTextSplitter
from langchain.vectorstores import VectorStore
from langchain_community.document_loaders import (PyPDFLoader, Docx2txtLoader, UnstructuredMarkdownLoader, UnstructuredExcelLoader
)
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_community.embeddings import ZhipuAIEmbeddings
from langchain_community.embeddings import DashScopeEmbeddings
from langdetect import detect
from weaviate import WeaviateClient
from weaviate.auth import AuthApiKey
from weaviate.collections.classes.grpc import MetadataQueryfrom diaggpt.textsplitter.jieba_text_splitter import JiebaTextSplitternltk.download('punkt')_default_text_splitter = NLTKTextSplitter.from_tiktoken_encoder(separator="\n\n",chunk_size=500,chunk_overlap=100,
)def get_vectorstore(client: WeaviateClient, collection_name: str, makers: str):if not check_index_exists(client, collection_name):create_collection(client, collection_name)else:print(f"索引 '{collection_name}' 早已存在.")embeddings = get_embeddings(makers)return WeaviateVectorStore(client, embeddings, collection_name)def check_index_exists(client: WeaviateClient, collection_name: str) -> bool:"""检查索引是否存在:param client: 连接:param collection_name: 索引名:return: True或者False"""try:collections = client.collections.list_all()# 检查 collection_name 是否存在于集合列表中collection_names = [c for c in collections]return collection_name in collection_namesexcept Exception as e:print(f"检查索引异常: {e}")return Falsedef get_embeddings(makers: str):if makers == "OpenAI":return OpenAIEmbeddings()elif makers == "ZhipuAI":return ZhipuAIEmbeddings()elif makers == "QianWen":return DashScopeEmbeddings()else:raise ValueError(f"不知道的厂商类型: {makers}")def create_collection(client: WeaviateClient, collection_name: str):collection_obj = {"class": collection_name,"description": "A collection for product information","invertedIndexConfig": {"bm25": {"b": 0.75,"k1": 1.2<

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 命令行使用ADB,不用root,完美卸载小米预装软件
  • nginx代理服务地址时添加帐号密码认证
  • 解决mysql事件调度器重启服务后自动失效的问题
  • 西门子s7第三方(S7netplus)读写操作
  • 从0开始搭建vue + flask 旅游景点数据分析系统(一):创建前端项目
  • 2024电赛H题参考方案(+视频演示+核心控制代码)——自动行使小车
  • 函数式编程范式
  • go-kratos 学习笔记(6) 数据库gorm使用
  • 后端返回列表中包含图片id,如何将列表中的图片id转化成url
  • vue3 命令运行窗口暴露网络地址,以及修改端口号
  • AI技术革命对未来就业的影响
  • GUI图形化界面操作(下部)
  • 基于Java的微博传播分析系统的设计与实现
  • 设计模式实战:任务调度系统的设计与实现
  • Vue2从基础到实战(v-bind对于样式控制的增强-操作style)
  • [case10]使用RSQL实现端到端的动态查询
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017前端实习生面试总结
  • Angularjs之国际化
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • css布局,左右固定中间自适应实现
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JS+CSS实现数字滚动
  • js继承的实现方法
  • MD5加密原理解析及OC版原理实现
  • Mocha测试初探
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • oldjun 检测网站的经验
  • supervisor 永不挂掉的进程 安装以及使用
  • Vue UI框架库开发介绍
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 浅谈web中前端模板引擎的使用
  • 思维导图—你不知道的JavaScript中卷
  • 新版博客前端前瞻
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • #NOIP 2014# day.1 T2 联合权值
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (42)STM32——LCD显示屏实验笔记
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (苍穹外卖)day03菜品管理
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (回溯) LeetCode 46. 全排列
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (十)T检验-第一部分
  • (算法)硬币问题
  • (一)Java算法:二分查找
  • (一)Linux+Windows下安装ffmpeg
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)Linq学习笔记
  • (转)大道至简,职场上做人做事做管理
  • (转)详解PHP处理密码的几种方式
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • **《Linux/Unix系统编程手册》读书笔记24章**