项目介绍:knowledge-gpt
项目概述
knowledge-gpt 是一个用于从各种来源收集信息的工具,包括互联网和本地数据。收集到的信息可以用于创建提示,这些提示可以通过OpenAI的GPT-3模型生成答案,并存储在数据库中以供将来参考。
项目机制
为了实现这一点,文本首先通过开源或OpenAI模型转化为固定大小的向量。当提交一个查询时,文本也被转化为向量,并与存储的知识嵌入进行比较。最相关的信息将被选出,并用于生成提示上下文。
支持的数据来源
knowledge-gpt 支持多种信息来源,包括网站、PDF文件、PowerPoint文件(PPTX)和文档(Docs)。此外,它还能从YouTube字幕和音频中提取文本(通过语音识别技术),并用作信息来源。这样就可以收集并利用各种信息来生成提示和答案。
安装指南
-
通过PyPI安装,请在终端中运行:
pip install knowledgegpt
-
或者可以使用仓库中的最新版本:
pip install -r requirements.txt
然后pip install .
-
下载用于解析的语言模型:
python3 -m spacy download en_core_web_sm
使用方法
RESTful API
要启动项目的API,可以使用以下命令:
uvicorn server:app --reload
设置API Key
- 访问 OpenAI > Account > Api Keys
- 创建新的密钥并复制
- 将密钥输入到example_config.py
库的使用示例
以下是一个简单的Python代码示例,展示如何使用该库来提取和生成信息:
# 导入库
from knowledgegpt.extractors.web_scrape_extractor import WebScrapeExtractor
# 导入OpenAI并设置API Key
import openai
from example_config import SECRET_KEY
openai.api_key = SECRET_KEY
# 定义目标网站
url = "https://en.wikipedia.org/wiki/Bombard_(weapon)"
# 初始化WebScrapeExtractor
scrape_website = WebScrapeExtractor(url=url, embedding_extractor="hf", model_lang="en")
# 向OpenAI模型发出提示
answer, prompt, messages = scrape_website.extract(query="What is a bombard?",max_tokens=300, to_save=True, mongo_client=db)
# 查看答案
print(answer)
# 输出:'A bombard is a type of large cannon used during the 14th to 15th centuries.'
项目的特性
- 从互联网提取知识(如维基百科)
- 从本地数据源提取知识 - 支持PDF、DOCX、PPTX
- 从YouTube音频(字幕不可用时)中提取知识
- 从YouTube转录中提取知识
- 从YouTube播放列表中提取知识
未来发展计划
- 添加矢量数据库支持(如Pinecone、Milvus等)
- 提供更好的界面和提示生成
- 增加更多支持的知识来源和语言
- 提升模型灵活性及提高测试、日志记录系统等方面的性能
Docker 使用
要通过Docker使用该项目:
docker build -t knowledgegptimage .
docker run -p 8888:8888 knowledgegptimage
通过这些信息,希望用户能轻松理解并利用knowledge-gpt从各种数据源中获取所需的信息。