# nlp **Repository Path**: quanw20/nlp ## Basic Information - **Project Name**: nlp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-18 - **Last Updated**: 2024-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## RAG retrieval augmented generation ``` Query -> VectorDB -> | +-----------------> ``` ## openai api key ``` sk-UNifSkn1fUz1mgXW3GoLJREJkS3mvahsv2pZyoeBznoL9D2l ``` ## GLM GLM ``` git clone https://gitcode.com/THUDM/GLM.git ``` ChatGLM3-6b ``` git install gls git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git ``` ## pip ``` https://pypi.douban.com/simple/ https://mirrors.aliyun.com/pypi/simple/ https://mirrors.163.com/pypi/simple/ ``` ## pgvector IVF stands for 'inverted file indexes'. It works by clustering your vectors in order to reduce the similarity search scope. Rather than comparing a vector to every other vector, the vector is only compared against vectors within the same cell cluster (or nearby clusters, depending on your configuration). ``` https://supabase.com/docs/guides/ai/vector-indexes/ivf-indexes ``` ## [llama.cpp](https://github.com/ggerganov/llama.cpp.git) ## Faiss FAISS(由Facebook AI Research开发的库,用于高效相似性搜索和密集向量聚类)的5W1H解释如下: **What(是什么)**: FAISS是一个开源库,用于高效相似性搜索和密集向量聚类。 它包含了许多算法,用于对大型向量集合进行搜索,特别是对于机器学习中的高维数据。 **Why(为什么)**: 在机器学习中,经常需要对大量向量进行相似性搜索,例如在推荐系统、图像检索和自然语言处理中。传统的搜索算法在数据量较大时效率低下,FAISS提供了一种高效的解决方案,可以在保持搜索精度的同时处理大规模数据。 **Who(谁开发的)**: FAISS由Facebook AI Research开发,现已成为一个广泛使用的开源项目。 **Where(在哪里使用)**: FAISS可以用于任何需要高效向量搜索的场景,包括但不限于推荐系统、图像和文本检索、以及机器学习中的各种聚类任务。 **When(何时使用)**: 当需要在大规模数据集上进行向量搜索或聚类时,FAISS是一个非常有用的工具。随着数据量的增长,传统算法的性能会迅速下降,而FAISS能够有效地处理这些大规模数据集。 **How(如何使用)**: FAISS可以通过Python接口或C++接口使用。它提供了多种算法和参数,可以根据具体的应用场景和数据集进行调整。用户可以通过安装FAISS库并在代码中导入相应的模块来使用它。 在Python中使用FAISS通常涉及以下步骤: 1. **安装FAISS**: 首先,你需要安装FAISS。由于FAISS依赖于一些C++库,因此安装过程可能稍微复杂一些。你可以使用pip来安装预编译的FAISS版本,或者从源代码编译以获得更好的性能。 使用pip安装预编译的FAISS(不包含GPU支持): ```bash pip install faiss-cpu ``` 如果你想使用GPU加速,你需要从源代码编译FAISS,并确保你的系统上安装了NVIDIA CUDA。 2. **导入FAISS**: 在Python代码中,你可以使用以下命令导入FAISS: ```python import faiss ``` 3. **创建索引**: 在搜索之前,你需要创建一个索引。FAISS提供了多种索引类型,如IVF(倒排文件索引)、Flat(扁平索引)、PCA(主成分分析索引)等。选择哪种索引取决于你的数据和性能要求。 ```python d = 64 # 向量维度 index = faiss.IndexFlatL2(d) # 创建一个扁平索引,使用L2距离 ``` 4. **添加向量到索引**: 一旦创建了索引,你可以向其中添加向量。这些向量应该是一个NumPy数组。 ```python xb = np.random.rand(1000, d).astype('float32') # 随机生成1000个向量 index.add(xb) # 将向量添加到索引中 ``` 5. **搜索向量**: 使用FAISS进行搜索,你可以找到与查询向量最相似的向量。 ```python xq = np.random.rand(10, d).astype('float32') # 随机生成10个查询向量 k = 4 # 查找最相似的4个向量 D, I = index.search(xq, k) # 执行搜索 ``` 其中`D`是一个数组,包含了查询向量与每个最近邻之间的距离,`I`是一个数组,包含了每个查询向量的最近邻的索引。 6. **使用GPU加速**: 如果你编译了GPU版本的FAISS,你可以将索引转移到GPU上以加速搜索。 ```python res = faiss.StandardGpuResources() # 创建一个GPU资源对象 index = faiss.index_cpu_to_gpu(res, 0, index) # 将索引转移到GPU上 ``` FAISS提供了将索引保存到磁盘和从磁盘加载索引的功能,这样你就可以在训练好索引后保存它,并在以后需要时重新加载。 以下是如何保存和加载FAISS索引的步骤: 1. **保存索引**: 使用`faiss.write_index`函数,你可以将索引保存到文件中。 ```python faiss.write_index(index, 'index.faiss') ``` 2. **加载索引**: 使用`faiss.read_index`函数,你可以从文件中加载索引。 ```python loaded_index = faiss.read_index('index.faiss') ``` 加载索引后,你可以像之前一样使用它进行搜索。 请注意,保存和加载索引时,FAISS会保存索引的结构和训练好的参数,但不会保存添加到索引中的数据。因此,在加载索引后,你需要重新添加数据(如果需要)。 如果你使用的是GPU加速的索引,你可能需要在保存之前将索引转移回CPU,然后再加载到GPU(如果需要)。 ```python # 保存GPU索引到CPU index_gpu = faiss.index_gpu_to_cpu(index) # 保存索引 faiss.write_index(index_gpu, 'index.faiss') # 加载索引到CPU loaded_index_cpu = faiss.read_index('index.faiss') # 如果需要,将索引转移到GPU res = faiss.StandardGpuResources() loaded_index_gpu = faiss.index_cpu_to_gpu(res, 0, loaded_index_cpu) ``` 确保在保存和加载索引时使用相同的FAISS版本,以避免兼容性问题。如果版本不同,可能会导致加载失败或行为不一致。 ## GoT ## [chatglm.cpp](https://github.com/li-plus/chatglm.cpp) - Pure C++ implementation based on ggml, working in the same way as llama.cpp. - Accelerated memory-efficient CPU inference with int4/int8 quantization, optimized KV cache and parallel computing. - Streaming generation with typewriter effect. - Python binding, web demo, api servers and more possibilities. ## 医疗数据 1. [medscape](https://www.medscape.com/) 2. [智慧芽pharmsnap](https://synapse.zhihuiya.com/) 3. [osmosis](https://www.osmosis.org/) 4. [radiopaedia](https://radiopaedia.org/) 5. [寻医问药](https://www.xywy.com/) 6. [医学百科](https://www.yixue.com/)