|
1 |
| -# Kernel Feature Matrix by Language |
| 1 | +# Semantic Kernel Feature Matrix by Language |
2 | 2 |
|
3 | 3 | **Legend**
|
4 | 4 |
|
|
10 | 10 |
|
11 | 11 | | | C# | Python | Java | Notes |
|
12 | 12 | |-----------------------------------|:----:|:------:|:----:|-------|
|
13 |
| -| TextGeneration | ✅ | ✅ | ✅ | Example: Text-Davinci-003 | |
14 |
| -| TextEmbeddings | ✅ | ✅ | ✅ | Example: Text-Embeddings-Ada-002 | |
15 |
| -| ChatCompletion | ✅ | ✅ | ❌ | Example: GPT4, Chat-GPT | |
16 |
| -| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E | |
| 13 | +| Text Generation | ✅ | ✅ | ✅ | Example: text-davinci-003 | |
| 14 | +| Text Embeddings | ✅ | ✅ | ✅ | Example: text-embeddings-ada-002 | |
| 15 | +| Chat Completion | ✅ | ✅ | ❌ | Example: GPT-4, GPT-3.5-turbo | |
| 16 | +| Image Generation | ✅ | ❌ | ❌ | Example: Dall-E 2 | |
17 | 17 |
|
18 | 18 | ## AI Service Endpoints
|
19 | 19 |
|
20 |
| -| | C# | Python | Java | Notes | |
21 |
| -|-----------------------------------|:----:|:------:|:----:|-------| |
22 |
| -| OpenAI | ✅ | ✅ | ✅ | | |
23 |
| -| AzureOpenAI | ✅ | ✅ | ✅ | | |
24 |
| -| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | |
25 |
| -| Hugging Face Local | ❌ | ✅ | ❌ | | |
26 |
| -| Custom | ✅ | 🔄 | ❌ | Requires the user to define the service schema in their application | |
| 20 | +| | C# | Python | Java | Notes | |
| 21 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 22 | +| OpenAI | ✅ | ✅ | ✅ | | |
| 23 | +| Azure OpenAI | ✅ | ✅ | ✅ | | |
| 24 | +| Hugging Face Inference API | 🔄 | ❌ | ❌ | Coming soon to Python, not all scenarios are covered for .NET | |
| 25 | +| Hugging Face Local | ❌ | ✅ | ❌ | | |
| 26 | +| Custom | ✅ | 🔄 | ❌ | Requires to define the service schema in the application | |
27 | 27 |
|
28 | 28 | ## Tokenizers
|
29 | 29 |
|
30 |
| -| | C# | Python | Java | Notes | |
31 |
| -|-----------------------------------|:----:|:------:|:----:|-------| |
32 |
| -| GPT2 | ✅ | ✅ | ✅ | | |
33 |
| -| GPT3 | ✅ | ❌ | ❌ | | |
34 |
| -| tiktoken | 🔄 | ❌ | ❌ | Coming soon to Python and C#. Can be manually added to Python via `pip install tiktoken` | |
| 30 | +| | C# | Python | Java | Notes | |
| 31 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 32 | +| GPT2 | ✅ | ✅ | ✅ | | |
| 33 | +| GPT3 | ✅ | ❌ | ❌ | | |
| 34 | +| tiktoken | ❌ | ❌ | ❌ | Coming soon. Can be added manually to Python via `pip install tiktoken` | |
35 | 35 |
|
36 | 36 | ## Core Skills
|
37 | 37 |
|
38 |
| -| | C# | Python | Java | Notes | |
39 |
| -|-----------------------------------|:----:|:------:|:----:|-------| |
40 |
| -| TextMemorySkill | ✅ | ✅ | 🔄 | | |
41 |
| -| ConversationSummarySkill | ✅ | ✅ | ❌ | | |
42 |
| -| FileIOSkill | ✅ | ✅ | ❌ | | |
43 |
| -| HttpSkill | ✅ | ✅ | ❌ | | |
44 |
| -| MathSkill | ✅ | ✅ | ❌ | | |
45 |
| -| TextSkill | ✅ | ✅ | 🔄 | | |
46 |
| -| TimeSkill | ✅ | ✅ | 🔄 | | |
47 |
| -| WaitSkill | ✅ | ❌ | ❌ | | |
| 38 | +| | C# | Python | Java | Notes | |
| 39 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 40 | +| TextMemory Skill | ✅ | ✅ | 🔄 | | |
| 41 | +| ConversationSummary Skill | ✅ | ✅ | ❌ | | |
| 42 | +| FileIO Skill | ✅ | ✅ | ❌ | | |
| 43 | +| Http Skill | ✅ | ✅ | ❌ | | |
| 44 | +| Math Skill | ✅ | ✅ | ❌ | | |
| 45 | +| Text Skill | ✅ | ✅ | 🔄 | | |
| 46 | +| Time Skill | ✅ | ✅ | 🔄 | | |
| 47 | +| Wait Skill | ✅ | ❌ | ❌ | | |
48 | 48 |
|
49 | 49 | ## Planning
|
50 | 50 |
|
51 |
| -| | C# | Python | Java | Notes | |
52 |
| -|-----------------------------------|:----:|:------:|:----:|-------| |
53 |
| -| Plan | ✅ | ✅ | ❌ | Need to port the Plan object model | |
54 |
| -| BasicPlanner | ❌ | ✅ | ❌ | | |
55 |
| -| ActionPlanner | ✅ | ❌ | ❌ | | |
56 |
| -| SequentialPlanner | ✅ | ❌ | ❌ | | |
| 51 | +| | C# | Python | Java | Notes | |
| 52 | +|-----------------------------------|:---:|:------:|:----:|-------| |
| 53 | +| Plan | ✅ | 🔄 | ❌ | Plan object model to be completed | |
| 54 | +| BasicPlanner | ❌ | ✅ | ❌ | | |
| 55 | +| ActionPlanner | ✅ | ❌ | ❌ | | |
| 56 | +| SequentialPlanner | ✅ | ❌ | ❌ | | |
| 57 | + |
| 58 | +## Memory Connectors, Vector storage |
| 59 | + |
| 60 | +| | C# | Python | Java | Notes | |
| 61 | +|---------------|:---:|:------:|:----:|-------| |
| 62 | +| Azure Search | ✅ | 🔄 | ❌ | Azure Cognitive Search under development, currently in private preview | |
| 63 | +| Qdrant | ✅ | ❌ | ❌ | | |
| 64 | +| Pinecone | ✅ | ❌ | ❌ | | |
| 65 | +| Weaviate | ❌ | ✅ | ❌ | Currently supported on Python 3.9-3.11, 3.8 coming soon | |
| 66 | +| ChromaDb | ❌ | ✅ | ❌ | | |
| 67 | +| Milvus | ❌ | ❌ | ❌ | Coming soon | |
| 68 | +| Sqlite | ✅ | ❌ | ❌ | Vector optimization requires [sqlite-vss](https://github.com/asg017/sqlite-vss) | |
| 69 | +| Postgres | ✅ | ❌ | ❌ | Vector optimization requires [pgvector](https://github.com/pgvector/pgvector) | |
| 70 | +| CosmosDB | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | |
57 | 71 |
|
58 | 72 | ## Connectors and Skill Libraries
|
59 | 73 |
|
60 |
| -| | C# | Python | Java | Notes | |
61 |
| -|-----------------------------------|:----:|:------:|:----:|-------| |
62 |
| -| Qdrant (Memory) | ✅ | ❌ | ❌ | | |
63 |
| -| ChromaDb (Memory) | ❌ | 🔄 | ❌ | | |
64 |
| -| Milvus (Memory) | ❌ | ❌ | ❌ | | |
65 |
| -| Pinecone (Memory) | ✅ | ❌ | ❌ | | |
66 |
| -| Weaviate (Memory) | ❌ | ✅ | ❌ | | Vector optimized |
67 |
| -| CosmosDB (Memory) | ✅ | ❌ | ❌ | CosmosDB is not optimized for vector storage | |
68 |
| -| Sqlite (Memory) | ✅ | ❌ | ❌ | Sqlite is not optimized for vector storage | |
69 |
| -| Postgres (Memory) | ✅ | ❌ | ❌ | Vector optimized (required the [pgvector](https://github.com/pgvector/pgvector) extension) | |
70 |
| -| Azure Cognitive Search | ✅ | 🔄 | ❌ | | |
71 |
| -| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | |
72 |
| -| Document and Data Loading Skills (i.e. pdf, csv, docx, pptx) | ✅ | ❌ | ❌ | Currently only supports Word documents | |
73 |
| -| OpenAPI | ✅ | ❌ | ❌ | | |
74 |
| -| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | |
75 |
| -| Text Chunkers | 🔄 | 🔄 | ❌ | | |
76 |
| - |
77 |
| -## Design Choices |
| 74 | +| | C# | Python | Java | Notes | |
| 75 | +|---------------------------------------|:---:|:------:|:----:|-------| |
| 76 | +| MsGraph | ✅ | ❌ | ❌ | Contains connectors for OneDrive, Outlook, ToDos, and Organization Hierarchies | |
| 77 | +| Document and Data Loading Skills | ✅ | ❌ | ❌ | Pdf, csv, docx, pptx. Currently only supports Word documents | |
| 78 | +| OpenAPI | ✅ | ❌ | ❌ | | |
| 79 | +| Web Search Skills (i.e. Bing, Google) | ✅ | ❌ | ❌ | | |
| 80 | +| Text Chunkers | 🔄 | 🔄 | ❌ | | |
| 81 | + |
| 82 | +# Design Choices |
78 | 83 |
|
79 | 84 | The overall architecture of the core kernel is consistent across all languages,
|
80 |
| -however, the code should follow common paradigms and style of each language. |
| 85 | +however, the code follows common paradigms and style of each language. |
81 | 86 |
|
82 | 87 | During the initial development phase, many Python best practices have been ignored
|
83 | 88 | in the interest of velocity and feature parity. The project is now going through
|
84 | 89 | a refactoring exercise to increase code quality.
|
85 | 90 |
|
86 |
| -To make the Kernel as lightweight as possible, the core pip package should have |
87 |
| -a minimal set of external dependencies. On the other hand, the SDK should not |
88 |
| -reinvent mature solutions already available, unless of major concerns. |
| 91 | +To make the SDK as lightweight as possible, the core packages have |
| 92 | +a minimal set of external dependencies. |
0 commit comments